leetCode 169 多數元素 多數投票

2021-10-06 02:15:05 字數 943 閱讀 6789

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

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

1.雜湊表存一遍,再遍歷找到出現次數大於 ⌊ n/2 ⌋ 的元素。

2.對陣列進行排序 中間的一定是出現次數大於 ⌊ n/2 ⌋ 的元素。

3. 多數投票演算法 定義乙個cnt = 0 ,遇到和當前majorityelement相同的元素就

cnt++ 否則-- 當cnt== 0 說明前面i個元素沒有次數大於 ⌊ n/2 ⌋ 的元素,或者已經出現,但是此時出現次數小於⌊ n/2 ⌋ ,重新定義majorityelement。全部遍歷完時的majorityelement就是要輸出的

投票演算法原理解析:

多數元素 與 非多數元素對應抵消 最後剩下的一定是多數元素

majorityelement 可能指向多數元素 但cnt 被抵消為0了

此時若是多數元素出現 q 次 說明有q 個非多數元素與多數元素抵消了

那麼在剩下的元素中 多數元素的個數仍然要大於非多數元素

那我們只要找出餘下元素中的多數元素就可以了

就相當於與如果cnt 為 0 那我們就捨棄前半部分。

在剩下的元素中找 所以要重新定義majorityelement

class

solution

}return0;

}}

class

solution

}

class

solution

else

if(majorityelement == nums[i]

)else

}return majorityelement;

}}

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 ...