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

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

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;
    }
全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务