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

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

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

投票法

由于众数的数量超过数组长度的一半,所以可以采用投票的方式,当候选者的票数为0后需要更换候选者,否则当遇到候选者时票数增加,当遇到其他数时票数减一,最后获胜的一定是这个超过数组长度一半的众数

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        //投票法
        int cond = -1;
        int cnt = 0;
        int len = array.length;
        if(len==0) return 0;
        for(int i = 0;i < len;i++){
            if(cnt==0){
                cond = array[i];
                cnt++;
            }else{
                if(cond==array[i]) cnt++;
                else cnt--;
            }
        }
        return cond;
    }
}
全部评论

相关推荐

11-13 10:17
门头沟学院 Java
昨天面美团,jvm,juc问的好深啊,感觉小林coding不太够喔,牛油们有没有什么推荐的八股网站嘛🕒&nbsp;岗位/面试时间👥&nbsp;面试题目🤔&nbsp;面试感受
明天不下雨了:小林Coding:https://xiaolincoding.com/ 全栈哥:https://www.pdai.tech/ Guide哥:https://javaguide.cn/ 秀哥:https://interviewguide.cn/ 沉默王二:https://javabetter.cn/home.html 磊哥:https://www.javacn.site/interview/basic/ 小傅哥:https://bugstack.cn/ 源码哥:https://doocs.github.io/source-code-hunter/#/ 各大厂的公众号技术文章和一些经典的书籍
面试太紧张了怎么办?
点赞 评论 收藏
分享
10-10 16:30
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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