原题目:
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.
就是给出一个大小为n的数组,找出里面出现次数多于n/2的元素值。
我的想法是快排一下,排序后相同的元素在一起,这时候找到这个值就可以了。但是还是提交了几次,都不知道哪里出问题了。后来出去玩,就把题扔这里了。现在回来重新写了一下,过了。
class Solution {
public:
int majorityElement(vector<int> &num) {
if (num.size() == 1)
return *num.begin();
std::vector<int>::iterator it;
sort(num.begin(), num.end());
int n = 1, key = *num.begin();
for (it = num.begin() + 1; it != num.end(); it++)
{
if (n > num.size() / 2)
return key;
if (key == *it)
{
n++;
}
else
{
key = *it;
n = 1;
}
}
if (n > num.size() / 2)
return key;
}
};