给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
以上为力扣的原题目,这个应该是简单的。
解题思路:
1,先找到可能是众数的数,也就是出现的频率最高
2,判断是否为众数
而这个题目假定了总是存在众数,也就是第二条是可以不存在的。
以下为我的答案:
class Solution {
public int majorityElement(int[] nums) {
if(nums.length<=0) return 0;
int temp=nums[0];//用来标记最多的数
int count=1;//用来记录众数的个数
for(int i=1;i<nums.length;i++){
if(nums[i]==temp){
count++;
}else{
count--;
}
if(count<=0){
temp=nums[i];
count=1;
}
}
//测试最后出来的temp是否为众数
count=0;
for(int n:nums){
if(n==temp){count++;}
}
if(count>nums.length/2) return temp;
return 0;
}
}