229 求眾數 II(JS實現)

2021-10-09 05:29:47 字數 856 閱讀 2149

給定乙個大小為 n 的陣列,找出其中所有出現超過 ⌊ n/3 ⌋ 次的元素。

說明: 要求演算法的時間複雜度為 o(n),空間複雜度為 o(1)。

示例 1:

輸入: [3,2,3]

輸出: [3]

示例 2:

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

輸出: [1,2]

這道題用摩爾投票法進行解答,根據題意我們知道超過1/3的出現次數這樣的數,最多出現兩個,因此設定兩個變數,遍歷整個陣列進行投票

/**

* @param nums

* @return

*/var

majorityelement

=function

(nums)

if(num === num2)

if(count1 ===0)

if(count2 ===0)

count1--

;//數字不同,則減一票

count2--

;//數字不同,則減一票

} count1 = count2 =0;

for(

let num of nums)

const res =

;if(count1 > len /

3) res.

push

(num1);if

(count2 > len /

3&& num1 !== num2) res.

push

(num2)

;return res;

};

169 求眾數 229 求眾數 II

不限定時間複雜度的話,很多人會先排序,再遍歷的方法來做。不限定空間複雜度的話,很多人會用hash表來做。那麼,有了這兩個限定,就只能用摩爾投票演算法了。主元素問題典型解法。摩爾投票演算法 時間複雜度o n 空間複雜度o 1 class solution else if nums i ans cnt ...

摩爾投票法 229 求眾數 II

給定乙個大小為 n 的陣列,找出其中所有出現超過 n 3 次的元素。說明 要求演算法的時間複雜度為 o n 空間複雜度為 o 1 示例 1 輸入 3 2,3 輸出 3 示例 2 輸入 1 1,1 3,3 2,2 2 輸出 1 2 解題 當要找大於n 2個個數的多數時,使用投票法,每次計數,當計數 0...

解題思路 leetcode第229題 求眾數

給定乙個大小為 n 的整數陣列,找出其中所有出現超過 n 3 次的元素。高階 嘗試設計時間複雜度為 o n 空間複雜度為 o 1 的演算法解決此問題。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 nums 1 輸出 1 示例 3 輸入 1,1,1,3,3,2,2,2 輸出 1,2 1 num...