【算法训练】LeetCode#229 多数元素 II
一、描述
229. 多数元素 II
给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋
次的元素。
示例 1:
输入:nums = [3,2,3]
输出:[3]
示例 2:
输入:nums = [1]
输出:[1]
示例 3:
输入:nums = [1,2]
输出:[1,2]
二、思路
这道题比较简单吧,遍历计数即可。
三、解题
public class LeetCode229 {
public List<Integer> majorityElement(int[] nums) {
int n = nums.length/3;
HashMap<Integer,Integer> map = new HashMap<>();
HashSet<Integer> set = new HashSet<>();
List<Integer> ans = new LinkedList<>();
for (int val : nums){
if (set.contains(val)){
continue;
}
int sum = map.getOrDefault(val,0); // 当前元素出现次数
if (sum+1 > n){
// 符合标准
set.add(val);
ans.add(val);
}
map.put(val,sum+1);
}
return ans;
}
}