找数组中数量超过总数一半的元素

思路:抵消法,记录当前元素ret,初始数量为num=0;从前到后遍历,发现遍历到的元素和ret相同,num++, 否则num--, 如果num==0,则ret变成当前元素。

public class MostNum {

    public static void main(String[] args) {
        int[] array = new int[]{1, 2, 3, 4, 2, 2, 2, 2, 5, 6, 2, 2};
        int res = mostNum(array);
        System.out.println(res);
    }

    public static int mostNum(int[] array) {
        int num = 0;
        int ret = Integer.MIN_VALUE;
        for (int i = 0; i < array.length; i++) {
            if (ret == array[i]) {
                num++;
            } else {
                if (num == 0) {
                    ret = array[i];
                } else {
                    num--;
                }
            }
        }
        return ret;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,716评论 1 45
  • 不足的地方请大家多多指正,如有其它没有想到的常问面试题请大家多多评论,一起成长,感谢!~ String可以被继承吗...
    启示录是真的阅读 3,065评论 3 3
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,585评论 0 1
  • 今天是中国农历新年大年初一,我陪着妈妈、孩子一起出行,喝早茶、逛街、购物; 所到之处,看到一片祥和悦愉的景象,大家...
    温玉阅读 231评论 0 0
  • 行尸走肉这么多天,已然忘了生活应该的样子。工作几乎霸占了我睡眠以外的时间,感觉自己变成一台机器,没有人情味,没有回...
    闻忆阅读 153评论 0 0

友情链接更多精彩内容