169. Majority Element
2016-10-04 本文已影响0人
AlanGuo
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋times.
You may assume that the array is non-empty and the majority element always exist in the array.
Solution:
用 HashMap 的 key-value pair 来存取每个元素出现的次数。每当放入一个元素后,检查当前该元素出现次数是否大于等于 n/2 +1,如果是则该元素为 Majority Element。
public class Solution
{
public int majorityElement(int[] nums)
{
int m = nums.length / 2 + 1;
HashMap<Integer, Integer> hm = new HashMap<>();
for(int i : nums)
{
int newCount = hm.getOrDefault(i, 0);
newCount += 1;
if(newCount >= m)
return i;
hm.put(i, newCount);
}
return 0;
}
}
唯一坑爹的就是“more than ⌊ n/2 ⌋times”……导致提交一次不过。⌊ n/2 ⌋难道不是 n/2 + 1 么?more than 它不就是 **> (n/2 + 1) **的意思么?谁知道这个“向上取整”形同虚设啊。
ps:
HashMap 简直神器。
HashMap 的 getOrDefault(key, defaultValue)方法是神器中的神器。