モードLeetCode 100トップ - を求めてT169-

件名の説明:

サイズnの配列を指定して、それらの数は、会衆を見つけます。モードは、より⌊N / 2⌋要素大きいアレイにおける出現数を指します。

あなたは、配列が空であると仮定することができ、および会衆の指定された配列番号は常にあります。

例1:

    入力:[3,2,3]
    出力:3

例2:

    入力:[2,2,1,1,1,2,2]
    出力:2

問題解決のアイデア:

NUMS配列を横断することにより、ハッシュマップを置くための重要な要素として、配列要素、比較の最後のキー戻り値値値

コード1

class Solution {
    public int majorityElement(int[] nums) {
        Map<Integer,Integer> hm = new HashMap<>();
        for (int num:nums) {
            if (!hm.containsKey(num)) {
                hm.put(num,1);
            } else {
                hm.put(num,hm.get(num)+1);
            }
            if (hm.get(num) > nums.length/2) {
                System.out.println(num);
            }
        }
    }
}

並べ替えをソートするときに使用することができます:コード2を

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length / 2];
    }
}

コード3:スタックの実装が、ローカルleetcodeにこの場合は除外されるべきである場合NUMS = {2,2,2,1,3,3}が実行できない場合には、のように見える(配列の長さが奇数です)

class Solution {
    public int majorityElement(int[] nums) {
        Stack<Integer> stack = new Stack<>();
        for (int i : nums) {
            if (stack.empty() || i == stack.peek()) {
                stack.push(i);
            } else {
                stack.pop();
            }
        }
        return stack.peek();
    }
}

 

おすすめ

転載: blog.csdn.net/qq_41544550/article/details/92748664