使用HashMap计算出数组中出现次数最多的数
方法一:
public int majorityElement(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for (int num : nums) {
if (map.containsKey(num)) {
map.put(num, map.get(num) + 1);
} else {
map.put(num, 1);
}
}
Integer maxValue = Integer.MIN_VALUE;
Integer maxKey = Integer.MIN_VALUE;
for(Map.Entry<Integer,Integer> entry: map.entrySet()){
if(entry.getValue()>maxValue){
maxValue = entry.getValue();
maxKey = entry.getKey();
}
}
return maxKey;
}
方法二:
public int majorityElement(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for (int num : nums) {
map.compute(num, (key, count) -> count == null ? 1 : count + 1);
}
Integer maxValue = Integer.MIN_VALUE;
Integer maxKey = Integer.MIN_VALUE;
for(Map.Entry<Integer,Integer> entry: map.entrySet()){
if(entry.getValue()>maxValue){
maxValue = entry.getValue();
maxKey = entry.getKey();
}
}
return maxKey;
}
方法三:
public int majorityElement(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int count = map.getOrDefault(nums[i], 0);
map.put(nums[i], count + 1);
}
Integer maxValue = Integer.MIN_VALUE;
Integer maxKey = Integer.MIN_VALUE;
for(Map.Entry<Integer,Integer> entry: map.entrySet()){
if(entry.getValue()>maxValue){
maxValue = entry.getValue();
maxKey = entry.getKey();
}
}
return maxKey;
}
方法四:
public static int majorityElement(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
map.merge(num, 1, Integer::sum);
}
Integer maxValue = Integer.MIN_VALUE;
Integer maxKey = Integer.MIN_VALUE;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() > maxValue) {
maxValue = entry.getValue();
maxKey = entry.getKey();
}
}
return maxKey;
}