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

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

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=117&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

//对数组同时去掉两个不同的数字 如果存在结果 那么最后剩下的一定是答案。最后一步需要判断最后剩下的是否满足超过一半 如果不满足就说明不存在,如果存在的话,就一定会满足。

public int MoreThanHalfNum_Solution(int [] array) {
        if(array==null) return 0;
        int count = 1;
        int pre = array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]==pre){
                count++;
            }else{
                count--;
                if(count==0){
                    if(i+1<array.length){
                        pre = array[i+1];
                        count = 1;
                    }else return 0;
                }
            }
        }
        int cnt =0;
        //判断最后剩下的输是否满足次数超过一半
        for(int i=0;i<array.length;i++){
            if(pre==array[i]){
                cnt++;
            }
        }
        if(cnt>array.length/2) return pre;
        return 0;
    }
全部评论

相关推荐

11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务