题目
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2
限制:1 <= 数组长度 <= 50000
题解
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length / 2];
}
}
class Solution {
public int majorityElement(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for(int num : nums)
map.put(num, map.getOrDefault(num, 0) + 1);
for(int num : nums){
if(map.get(num) > nums.length / 2)
return num;
}
return -1;
}
}
//getOrDefault(key, defaultValue)
//当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue