LeetCode--169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。


示例 1:
输入:[3,2,3]
输出:3

示例 2:
输入:[2,2,1,1,1,2,2]
输出:2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element


题解:
  核心思想是摩尔投票法,说简单点可以这样理解:从全局来看,多的那个数可以和其它数据进行一对一抵消,那么由于数量多的缘故,最后抵消剩下的数据肯定就是数组当中存在的多数元素。

 public int majorityElement(int[] nums) {
        int count = 1;
        int temp = nums[0];
        for(int i=1;i<nums.length;++i){
            if(nums[i] == temp)
                ++count;
            else
                --count;
            if(count == 0) {
                temp = nums[i];
                --i;
            }
        }
        return temp;
    }

在这里插入图片描述

1.从第一个元素开始计数抵消,初始数量为1;
2.遇到相同的就+1,不用就-1;
3.count计数为0就更新temp从下一个数据开始;
4.最后temp保存的数据就是结果。

你可能感兴趣的:(LeetCode,算法,java,leetcode)