給定一個大小為 n
的陣列 nums
,返回其中的多數元素。多數元素是指在陣列中出現次數 大於 ⌊ n/2 ⌋
的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
示例 1:
輸入:nums = [3,2,3]
輸出:3
示例 2:
輸入:nums = [2,2,1,1,1,2,2]
輸出:2
思想:在排序後,出現次數超過n/2的數一定在中間(向下取整)//暴力解法
sort(nums.begin(),nums.end());
auto it=nums.begin()+nums.size()/2;
return *it;
正經:投票 當數字重複,count+1,不同數字出現,count-1,當count為0,更換數字
int candidate=0,count=0;
for(int i=0;i<nums.size();i++){
if(count==0){
candidate=nums[i];
count++;
}
else{
if(nums[i]==candidate) count++;
else count--;
}
}
return candidate;