查詢陣列中出現次數大於陣列長度一半的數字

不愛吃蘿蔔的男孩發表於2020-12-15

查詢陣列中出現次數大於陣列長度一半的 數字

樣例:[1, 2, 3, 2, 2, 2, 5, 4, 2];
程式碼思路:一個數字如果遇到和它不一樣的數字則結果 = -1;相同則 = +1;
		在遍歷完陣列中所以元素後,如果能夠抵消到其餘的所有數字,
		那麼這個數字必定次數是大於陣列長度的一半的。
每次使得flag=0成立,那麼就是這個數字A和下一位數字B不同,當前A次數是1次。
class Solution {
    public int majorityElement(int[] nums) {
       int res=nums[0];
       int flag=0;
       for(int num:nums){
           if(flag==0) res=num;
           flag+=num==res?1:-1;
       }
       return res;
    }
}

相關文章