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

来源:互联网 发布:网络攻击的种类 编辑:程序博客网 时间:2024/05/18 01:35

【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;    }};
0 0