LeetCodeインタビューの質問17.10。主な要素

LeetCodeインタビューの質問17.10。主な要素

トピック

ここに画像の説明を挿入します


アイデア

ムーア投票法
は、配列内の2つの等しくない数を任意に排除し、最後に残っている数が過半数でなければなりません。

一般的な理解:多くの国の兵士が同じ強さで戦う場合、彼らは間違いなく1人に変わり、より多くの兵士がいる国が勝ちます。(より多くの人が勝ちます)

この問題を解決するためのアイデア:最初にムーア投票方法を使用して配列内のモードを選択し、次に配列をトラバースしてこのモードの発生数をカウントします発生数が(配列の長さ)より大きい場合/ 2)、次にこのモードを返します。それ以外の場合は-1を返します。


コードの実装(Java言語)

class Solution {
    
    
    public int majorityElement(int[] nums) {
    
    
        int tmp = 0, cnt = 0, len = nums.length;
        for(int i = 0; i<len; i++) {
    
    
            if(cnt == 0){
    
    
                tmp = nums[i];
                cnt = 1;
            } else {
    
    
                if(tmp == nums[i])
                    cnt++;
                else
                    cnt--;
            }
        }
        if(cnt > 0) {
    
    
            int total = 0;
            for(int num : nums) {
    
    
                if(num == tmp) {
    
    
                    total++;
                }
            }
            if(total > len/2) {
    
    
                return tmp;
            }
        }
        return -1;
    }
}

共有を主張し、独創性を主張し、ブロガーが好きな可愛い女の子はブロガーのホームページブログをチェックすることができます!
あなたの好きなものやお気に入りは、ブログを共有するための私の最大の感謝です!
Bloggerブログアドレス:https//blog.csdn.net/weixin_43967679

おすすめ

転載: blog.csdn.net/weixin_43967679/article/details/114146391