LeetCode 169. Majority Element

题意为在非空数组中有一个数出现次数大于 ceiling(num.size() >> 1), 那么可以进行如下模拟:

任取数组中的两个不相同的数,将它们一起拿去,这样一次一次地拿,最后剩下的一个(或相同的几个)数,即为Majority Element.


代码:

class Solution 
{
public:
    int majorityElement(vector<int> &num) 
    {
        int candidate;
        int cnt = 0;

        for (size_t i = 0; i < num.size(); ++ i)
        {
        	if (cnt == 0)
        	{
        		candidate = num[i];
        		++ cnt;
        	} else
        	{
        		cnt += (candidate==num[i])? 1: -1;
        	}
        }

        return candidate;
    }
};


你可能感兴趣的:(LeetCode,C++)