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.
解题思路:先给数组排序,然后找到符合间隔的。
c++版本“
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int majorityElement(vector<int>& nums)
{
int n=nums.size()%2==0?nums.size()/2:(nums.size()/2+1);
if (nums.size()==1) return nums[0];
sort(nums.begin(),nums.end());
for (int i=0; i<n; i++)
{
if(nums[i]==nums[i+nums.size()/2])
return nums[i];
}
return 0;
}
int main()
{
vector <int> s;
s.push_back(1);
s.push_back(1);
s.push_back(1);
s.push_back(2);
s.push_back(3);
int sum=majorityElement(s);
cout<<sum<<endl;
}
java版本:
public class Solution {
public int majorityElement(int[] nums) {
if(nums.length==1) return nums[0];
int n=nums.length%2==0?nums.length/2:(nums.length/2+1);
Arrays.sort(nums);
for (int i=0;i<n;i++){
if(nums[i]==nums[i+nums.length/2])
return nums[i];
}
return 0;
}
}