【leetcode】求眾數

SunAlwaysOnline發表於2018-10-27

                                                    求眾數

一、題目描述

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

你可以假設陣列是非空的,並且給定的陣列總是存在眾數。

示例 1:

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

示例 2:

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

二、思路

先假設第一個元素為眾數,計數器置為1,遍歷陣列,當遇到相同的元素時,計數器加1,否則減1,任何計算器為0的時候,就假設下一個元素為眾數,計數器再置為1。迴圈結束時,返回我們假設的眾數,即要求的眾數。


三、程式碼演示

 public int majorityElement(int[] nums) {
        int result = nums[0];
        int times = 1;
        for (int i = 1; i < nums.length; i++) {
            if (result == nums[i]) {
                times++;
            } else {
                times--;
                if (times == 0) {
                    result = nums[++i];
                    times++;
                }
            }
        }
        return result;
    }

 

相關文章