【LeetCode】Majority Element(求衆數)

這道題是LeetCode裏的第169道題。

題目描述:

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

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

示例 1:

輸入: [3,2,3]
輸出: 3

示例 2:

輸入: [2,2,1,1,1,2,2]
輸出: 2

三種方法: 

  1. 摩爾投票法
  2. 排序後去中間數
  3. 使用哈希表映射

我使用效率最高的摩爾投票法。

解題代碼:

class Solution {
    public int majorityElement(int[] nums) {
        int ret = nums[0];
        int count = 1;
        for(int num : nums) {
            if(num != ret) {
                count--;
                if(count == 0) {
                    count = 1;
                    ret = num;
                }
            }
            else
                count++;
        }
        return ret;
    }
}

提交結果:

個人總結:

學到一種新方法,不虧!

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