leecode 169. 多數元素

墨燃云發表於2024-07-11

給定一個大小為 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;

相關文章