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

ccmedu發表於2019-03-20

自己整理的不算轉載

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

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

示例 1:

 

方法一:取陣列第一個元素,去迴圈重複一個就計數為1,沒遇到一樣的就減一,直到為零換下一個元素去陣列碰,剩下的一定是最多的那個

class Solution {
  
    public static void main(String[] args) {
        int[] a = {2,2,1,1,1,2,2};
        System.out.println(majorityElement(a));
    }

    public static int majorityElement(int[] nums) {
        int a = nums[0];
        int count = 1;
        for(int num : nums) {
            if(num == a) {
                count ++;
            }else {
                count --;
                if(count == 0) {
                    a = num;
                    count = 1;
                }
            }
        }
        return a;
    }
}

 

方法二:先sort排下序,然後取最中間的那個數因為定義的是個數大於陣列長度的二分之一

 

public static void main(String[] args) {
    int[] a = {2,2,1,1};
    System.out.println(majorityElement(a));
}

public static int majorityElement(int[] nums) {
    Arrays.sort(nums);
    return nums[nums.length/2];
}

相關文章