Description
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.
Example 1:
Input: [3,2,3]
Output: 3
Example 2:
Input: [2,2,1,1,1,2,2]
Output: 2
Solution
递归(快是快,可怎么把memory降下来?)
code:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int numsLen(nums.size());
if (numsLen<=2) return nums[0];
vector<int> res;
int i(0);
int c(0);
if(numsLen%2==1)
{
while(i<numsLen){
if(nums[numsLen-1]==nums[i]) ++c;
++i;
}
if(c>numsLen/2) return nums[numsLen-1];
--numsLen;
}
i = 0;
while(i<numsLen)
{
if(nums[i]==nums[i+1]) res.push_back(nums[i]);
i+=2;
}
return majorityElement(res);
}
};
结果:
Your runtime beats 98.97 % of cpp submissions.
memory last 5%
20190403
tbc