leetcode 169.多数元素

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

-----------------------------------------------------------------------------------------------------------------------------

可以理解成用兵打仗,因为多数元素要大于总和的一半以上,所以我自己一个人就可以胜出其他数字加一起的力量。那么遇见和自己相同的相减,减到0换一个数。遇见相同的加。最后得出来的就是结果数字。

class Solution {
    public int majorityElement(int[] nums) {
        int ans = nums[0];
        int num = 1;
        if(nums.length <= 1) return ans;
        for(int i = 1; i < nums.length; i++){
            if(ans != nums[i] && num == 1){
                ans = nums[i];
            }else if(ans != nums[i] && num > 1){
                num--;
            }else{
                num++;
            }
        }
        return ans;
    }
}

你可能感兴趣的:(leetcode,散列表,算法)