LeetCode第169題多數元素

2021-10-07 07:49:58 字數 870 閱讀 9042

題目描述

給定乙個大小為 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...