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
C++
int majorityElement(vector<int>& nums) {
int length = nums.size();
int start = 0;
int end = nums.size() - 1;
int middle = length>>1;
int index = Partition(nums,start,end);
while(index != middle)
{
if(index < middle)
{
start = index + 1;
index = Partition(nums,start,end);
}
else
{
end = index - 1;
index = Partition(nums,start,end);
}
}
return nums[index];
}
int Partition(vector<int>& nums,int left,int right)
{
if(nums.size() == 0||left < 0||right < left)
return 0;
int i = left;
int j = right;
int temp = nums[i];
while(i != j)
{
while(i < j&&nums[j] >= temp)--j;
nums[i] = nums[j];
while(i < j&&nums[i] <= temp)++i;
nums[j] = nums[i];
}
nums[i] = temp;
return i;
}