LeetCode 169 多數元素

2021-10-13 22:42:59 字數 684 閱讀 3563

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

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

高階:

在看答案之前,沒聽說過還有「摩爾投票法」這個神奇的方法,原來題述強調眾數個數大於總個數的一半是有原因的。摩爾投票法即:每次選乙個數作為暫時的眾數tmpnum,定義變數count計數,初始值為0,從當前數後面開始看,碰到相同的數就count+1,碰到不相同的就count-1,當count<0時tmpnum就換新的數,count重新置0,迴圈遍歷每乙個數,最終tmpnum就是眾數。時間複雜度o(n),空間複雜度o(1)。

class

solution

return tmpnum;}}

;

既然知道了眾數數量一定大於n/2,那麼將整個陣列排序後,眾數一定會出現在nums[n/2]的位置。

class

solution

};

這道題用分治貌似挺麻煩的…

LeetCode 169 多數元素

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 思路一 既然是多數且超過n 2,那麼排序之後,這些數中間...

LeetCode 169 多數元素

題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。法 1 直接遍歷 時間複雜度 o n 2 空間複雜度 o 1 public intmajorityelement1 int nums if...

leetcode169 多數元素

用乙個變數和計數器輔助,變數存放當前元素的值a,計數器統計當前元素出現次數n 如果遇到的元素和a不一樣,則n減一,如果n為零,則把a替換成遇到的元素,b設為1 最後的a即為要求的多數元素 class solution count candidate num 1 1 return candidate ...