哈希表
class Solution {
public int majorityElement(int[] nums) {
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
if(map.get(nums[i])>nums.length/2){
return nums[i];
}
}
return 0;
}
}
将数组排序,中间位置的数是众数
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length / 2];
}
}
投票法
如何理解摩尔投票算法?
class Solution {
public int majorityElement(int[] nums) {
int ans=nums[0];
int count=1;
for(int i=1;i<nums.length;i++){
if(ans==nums[i]){
count++;
}
else{
count--;
if(count==0){
ans=nums[i+1];
}
}
}
return ans;
}
}
暴力法
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int size=numbers.size();
if(size==0){
return 0;
}
for(int i=0;i<size;i++){
int k=0;
for(int j=0;j<size;j++){
if(numbers[i]==numbers[j]){
k++;
}
}
if(k>size/2){
return numbers[i];
}
}
return 0;
}
};