LeetCode刷題: 【169】多數元素(摩爾投票法)

1. 題目

給定一個大小爲 n 的數組,找到其中的多數元素。多數元素是指在數組中出現次數大於 ⌊ n/2 ⌋ 的元素。

你可以假設數組是非空的,並且給定的數組總是存在多數元素。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/majority-element
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

2. 思路

投票法的思路是抵消,當讓兩兩不同的票相互抵消,由於衆數的數量大於一半,即使所有其他的數字都來抵消它,最後剩下的也一定是衆數

3. 代碼

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章