LeetCode精選TOP面試題169. 多數元素

題目描述

給定一個大小爲 n 的數組,找到其中的多數元素。多數元素是指在數組中出現次數大於 ⌊ n/2 ⌋ 的元素。
數組是非空的,並且給定的數組總是存在多數元素。

示例 1:
輸入: [3,2,3]
輸出: 3
示例 2:
輸入: [2,2,1,1,1,2,2]
輸出: 2

解題思路

根據題目描述,給定的數組總是存在多數元素,而多數元素的定義指在數組中出現次數大於 ⌊ n/2 ⌋ 的元素。
那麼這個題就很容易想了,直接排序,排序後返回數組中下標是nums.length / 2 的元素即可。要保證其出現次數大於 ⌊ n/2 ⌋ ,那麼這個數肯定橫跨在nums.length / 2 的左右,不管nums.length是奇數還是偶數。
舉個例子:

  • nums.length 是 6 的時候,多數元素出現的次數肯定大於⌊ 6 / 2 ⌋ = 3,也就是出現的次數 ≥ 4 ,那麼這個多數元素肯定會出現在排序後數組的 中間位置2 和 3上,很容易理解。
  • nums.length 是 7 的時候,多數元素出現的次數肯定大於⌊ 7 / 2 ⌋ = 3,也就是出現的次數 ≥ 4 ,那麼這個多數元素肯定會出現在排序後數組的中間位置 (3 和4)或者 (4 和5)上,也很容易理解。

代碼(Java)

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums); // 排序
        return nums[nums.length/2];// 返回結果
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章