題目描述
給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
解題思路
1、題意理解:對於乙個陣列n,找出該陣列**現最多次的元素,該元素出現的次數大於n/2,也就是該元素的個數至少比其他元素的個數多乙個。
2、**邏輯:boyer-moore 大多數投票演算法
(1)變數major初始為nums[0],票數count初始化為1
(2)當遇到與major相同的數,票數count加一,否則票數count減一
(3)如果票數count為0 ,更換major的值,並將票數count重置為1
**
class
solution
else
if(count==0)
else count--;}
return major;
}}
**2快排class
solution
}public
intpartition
(int
nums,
int left,
int right)
swap
(nums, left, r)
;return r;
}public
void
swap
(int
nums,
int i,
int j)
}
參考: leetCode 169 多數元素 多數投票
給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。1.雜湊表存一遍,再遍歷找到出現次數大於 n 2 的元素。2.對陣列進行排序 中間的一定是出現次數大於 n 2 的元素。3.多數投票演算法 定義乙個...
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...