给定一个大小为 n
的数组 nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
第一种hashmap方法计数,由于我自己对hashmap的遍历不太熟悉,多写了几种遍历方式不过都一样
class Solution {
public int majorityElement(int[] nums) {
int n=nums.length;
HashMap<Integer,Integer>map=new HashMap<Integer,Integer>();
for(int x:nums){
map.put(x,map.getOrDefault(x,0)+1);
}
Iterator<Map.Entry<Integer,Integer>> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<Integer,Integer> entries = iterator.next();
if(entries.getValue() > (n/2)){
return entries.getKey();
}
}
return 0;
}
}
class Solution {
public int majorityElement(int[] nums) {
int n=nums.length;
HashMap<Integer,Integer>map=new HashMap<Integer,Integer>();
for(int x:nums){
map.put(x,map.getOrDefault(x,0)+1);
}
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
if(entry.getValue() > (nums.length / 2)){
return entry.getKey();
}
}
return 0;
}
}
class Solution {
public int majorityElement(int[] nums) {
int n=nums.length;
HashMap<Integer,Integer>map=new HashMap<Integer,Integer>();
for(int x:nums){
map.put(x,map.getOrDefault(x,0)+1);
}
for(Integer key:map.keySet()){
if(map.get(key)>(n/2)){
return key;
}
}
return 0;
}
}
第二种方法 排序法 因为最多的元素大于n/2 所以排序过后中间元素一定是最多的数字
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}
}