题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

int MoreThanHalfNum_Solution(int* numbers, int numbersLen ) {
    // write code here              //这个方法参考2013年408考研的代码题的最优解法
    int count=0,a=numbers[0];     //a用于记录可能是出现超过一半的数组,出现一次count+1,不是则+1
    for(int i=1;i<numbersLen;i++){
        if(numbers[i]==a) count++;    //如果这个数是可能数a,则count+1
        else{
            if(count>0) count--;    //若这个数不是,则判断count,count>0则表明a还是有可能是的
            else{
                a=numbers[i];        //否则的话替换掉,因为目标数出现超过一半,所以最终还是会替换回来的
                count=1;
            }
        }
    }
    return a;
}

全部评论
那如果是[1,2,2,2,1,1,1]这组用例呢
点赞 回复 分享
发布于 2023-10-25 14:47 江西

相关推荐

写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务