169. 多数元素 - 力扣(LeetCode)
import java.util.HashMap;
public class LeetCode169 {
public int majorityElement(int[] nums) {
int count = nums.length;
int res = count/2;
Scanner scanner = new Scanner(System.in);
HashMap<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
}
int ans = 0;
for (Integer key : map.keySet()) {
if (map.get(key) > res){
ans = key;
break;
}
}
return ans;
}
// 算法思路:
// 1. 创建一个HashMap,将数组中元素作为key,出现的次数作为value
// 2. 遍历HashMap,找到value最大的key,即为出现次数最多的元素
// 3. 返回结果
//摩尔投票算法
public int majorityElement(int[] nums) {
int candidate = nums[0];
int count = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] == candidate) {
count++;
} else {
count--;
if (count == 0) {
candidate = nums[i];
count = 1;
}
}
}
return candidate;
}
}