找出数组中出现最多的数字
题意
- 给定大小为n的数组,找到多数元素。多数元素是出现次数多 的元素⌊ n/2 ⌋。
- 您可以假设该数组非空,并且多数元素始终存在于数组中。
- 例1:
- 输入: [3,2,3]
- 输出: 3
- 例2:
- 输入: [2,2,1,1,1,2,2]
- 输出: 2
解法
第一种方法排序就可以得出答案中位数就可以
public int majorityElement(int[] nums) {
Arrays.sort(nums);
int l=0;
int r=nums.length-1;
int mid=(l+r)>>1;
return nums[mid];
}
第二种方法消元法
public int majorityElement2(int[] num) {
//3.2.3
int result=num[0], count = 1;
for(int i=1; i<num.length;i++){
if(count==0){
count++;
result=num[i];
}else if(result==num[i]){
count++;
}else count--;
}
return result;
}
第三种方法HashMap就不详细介绍了。