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.
这种题。。。现在学聪明了。。。首先都是要排序的,然后想办法count一下下
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
int count = 1;
if(nums.size() == 1)
return nums[0];
for(int i = 1;i < nums.size();i++)
{
if(nums[i] == nums[i - 1])
{
count++;
if(count > (nums.size() / 2))
return nums[i];
}
else
count = 1;
}
}
};
that’s it
然后就去看了discuss。。。然后。。。噗。。。宝宝一口老血。。。
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()/2];
}
};
代码少了。。。然而。。。速度并没有上去。。。
宝宝又一口老血。。。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int major = nums[0], count = 1;
for(int i = 1;i < nums.size();i++)
{
if(count == 0)
{
count++;
major = nums[i];
}
else if(major == nums[i])
{
count++;
}
else
count--;
}
return major;
}
};
这个O(n)的牛逼逼逼的算法。。。咩。。。