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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM