【leetcode解題】算法之摩爾投票法

leetcode題目:


image.png

首先我用用了個Map,一旦出現(xiàn)計數(shù)超過數(shù)組長度一半,直接return。通過。
但是覺得這道題的關(guān)鍵之處在于一個數(shù)組中計數(shù)超過數(shù)組長度一半的數(shù)字只可能存在一個。
網(wǎng)上查了一通,知道了摩爾投票法的算法,學習了一下:
摩爾投票法的基本思想很簡單,在每一輪投票過程中,從數(shù)組中找出一對不同的元素,將其從數(shù)組中刪除。這樣不斷的刪除直到無法再進行投票,如果數(shù)組為空,則沒有任何元素出現(xiàn)的次數(shù)超過該數(shù)組長度的一半。如果只存在一種元素,那么這個元素則可能為目標元素。
下面是c++代碼

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

執(zhí)行結(jié)果:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容