多数元素
1.题目描述
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3]
输出:3
2.思路
我们可以使用HashMap来进行解决。map的key存放数组中的元素,而map的value存放每个元素出现的次数,最后再将每个元素的次数进行比较,出现最多的即是多数元素
也可以使用排序的方式。因为多数元素在数组中至少又n/2个,所以当我们排序之后,在n/2这个位置上出现的一定是多数元素
3.代码
class Solution {
// 使用HashMap
public int majorityElement(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for(Integer num:nums){
if(map.containsKey(num)){
int count = map.get(num);
count = count + 1;
map.put(num,count);
}else{
map.put(num,1);
}
}
int t = nums.length / 2;
Set<Integer> keySet = map.keySet();
Iterator<Integer> iterator = keySet.iterator();
int p = 0;
int c = 0;
while(iterator.hasNext()) {
Integer num = iterator.next();
if(map.get(num) > c){
c = map.get(num);
t = num;
}
}
return t;
}
// 使用排序
public int majorityElement2(int[] nums) {
Arrays.sort(nums);
return nums[nums.length / 2];
}
}