leetcode 169のタイトル・ノート(モル投票方法)

大きさnの配列を指定し、要素の大部分は、その中に見つかりました。配列内の要素のほとんどは、n / 2より⌊⌋大きい要素出現数を意味します。

あなたは、配列が空であると仮定することができ、与えられた配列のほとんどの要素が常にあります。

示例 1:

输入: [3,2,3]
输出: 3
示例 2:

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

最初はハッシュテーブルを考える人々のグループはとても速く期待されているか、完了しているが、それは真剣になります。

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        unordered_map<int, int>map;
        int max[2] = { 0,0 };
        for (int i : nums) {
            map[i]++;
            if (map[i] > max[1]) {
                max[0] = i;
                max[1] = map[i];
            }
        }
        return max[0];
    }
};

コメントでフォローアップを見ムーアの投票方法
+1同じ数の、異なる数-1、現在の番号を交換するために0に減少に遭遇し、カウントビット数を維持します。
方法2より大きいN /回数配列の出現回数を十分に活用するために、カウントは、他のすべての高周波数の合計よりもアレイ即ち横断、発生及び発生頻度の数の末尾に0より大きくなければなりません。

説明のためのコメントによると:
(他の要因を考慮せず、唯一の1対1を考慮して)、アジア諸国の覇権を、ときに軍隊が複数の他の国の合計よりも、あなたは無敵!長い間、通常の1対1などとして、あなたは常に最後までデポへの最後の変更になりますので!

しかし、このアプローチは、なぜ、まだ非常に多くのメモリです。

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int count=0;
        int max_num=nums[0];
        for(int i:nums){
            if(max_num==i){
                count++;
            }
            else{
                count--;
            }
            if(count<=0){
                max_num=i;
                count=1;
            }
        }
        return max_num;
    }
};

ムーアの投票方法は本当に長時間露光!

リリース9件のオリジナルの記事 ウォンの賞賛1 ビュー153

おすすめ

転載: blog.csdn.net/qq_37782336/article/details/104842864