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

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

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

相关推荐

03-29 19:11
门头沟学院 Java
wyp_davis:是可以这样的,不过只要交钱就是假的
点赞 评论 收藏
分享
05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务