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;
}
}
本文介绍了一种寻找数组中多数元素的算法实现,该元素出现次数超过数组长度的一半。通过排序数组并检查符合条件的元素来解决此问题,提供了C++和Java两种语言的代码示例。
285

被折叠的 条评论
为什么被折叠?



