タイトル
サイズnの配列を指定して、ほとんどの要素を見つけます。ほとんどの要素は、配列内で⌊n / 2⌋以上発生する要素を指します。
配列は空ではないと想定でき、指定された配列には常に大多数の要素が存在します。
例1:
入力:[3,2,3]
出力:3
例2:
入力:[2,2,1,1,1,2,2]
出力:2
問題解決のアイデアとコードのアイデア
- マップに保存すると、キーに対応する値はキーの番号になります。
- 問題のアカウント配列は空ではなく、要素の過半数が存在する必要があるため、キーの数> n / 2の場合、キーは要素の過半数です。
コード
class Solution {
public:
int majorityElement(vector<int>& nums) {
map<int, int> record;
int result;
for(int i = 0; i < nums.size(); i++){
record[nums[i]]++;
if(record[nums[i]] > (nums.size() / 2)){
result = nums[i];
break;
}
}
return result;
}
};