給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
示例 1:
示例 2:輸入: [
3,2,3]
輸出: 3
思路1:輸入: [
2,2,1,1,1,2,2]
輸出: 2
hashmap,儲存每乙個元素出現過的次數,最後遍歷map,返回次數多於一半的元素。
ac**:(c++)
思路2:摩爾投票class
solution
for(unordered_map<
int,
int>
::iterator it = mp.
begin()
; it != mp.
end();
it++)}
return ans;}}
;
定義乙個ans和count,初始化count=1,ans=nums[0]。
遍歷nums陣列,如果當前元素與ans相同,則count++,否則count–,如果count<0,則將ans換成當前元素nums[i],重新置count=1,遍歷完之後返回ans即可。
相當於每次選兩個不同的消除掉,由於題目保證一定有結果,那麼最後剩下的那個元素就是多數元素。
ac**:(c++)
class
solution
}return ans;}}
;
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 ...