Java力扣题解:169 多数元素——投票法

题目

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

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

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

分析

这里的投票法,是以第一个元素为基准数,票数为1。如果遇到相同的就票数加一,不同的票数减一。当票数为0时,换下一个数作为基准数。从票数为1开始。

因为题中说一定有多数元素,多数元素是多于n/2的,所以count一定大于0。

代码

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

你可能感兴趣的:(leetcode,leetcode)