问题描述
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
个人思路
第一种:摩尔投票法思路
- 初始化,第一个nums[0]为候选人ans,票数n = 0
- 遍历数组,遇同n+1,不同n-1
- 当n为0时,更换候选人,并n为0
- 最终结果就是ans
代码如下
/*
第一种:摩尔投票法思路
第二种:移位
*/
class Solution {
public int majorityElement(int[] nums) {
int n = 0;
int ans = 0;
for (int i = 0; i < nums.length; i++){
if(n == 0){
ans = nums[i];
n = 0;
}
if(nums[i] == ans){
n++;
}else{
n--;
}
}
return ans;
}
}
// 第二种
// class Solution {
// public int majorityElement(int[] nums) {
// Arrays.sort(nums);
// return nums[nums.length >> 1];
// }
// }