【LeetCode】169. Majority Element Majority Element Given an array of size n, find the majority eleme

【LeetCode】169. Majority Element

Majority Element

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

 

每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。

可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。

证明可参见我在Discussion上的分析https://oj.leetcode.com/discuss/19151/solution-computation-space-problem-can-extended-situation

复制代码
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int candidate = 0;
        int count = 0;
        for(int i = 0; i < nums.size(); i ++)
        {
            if(count == 0)
            {
                candidate = nums[i];
                count = 1;
            }
            else
            {
                if(nums[i] == candidate)
                    count ++;
                else
                    count --;
            }
        }
        return candidate;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值