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)方法是神器中的神器。

上一篇下一篇

猜你喜欢

热点阅读