Leetcode Array 169 多數元素

2021-10-06 08:13:06 字數 1148 閱讀 7699

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

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

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

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

輸出: 2

解法一:暴力解法

其實也不算暴力解法,就是使用python自帶的sort函式先排序,因為多數元素超過n//2,所以第n//2必是多數元素。

解法二:摩爾投票法

摩爾投票法(boyer–moore majority vote algorithm),也被稱作「多數投票法」,演算法解決的問題是:如何在任意多的候選人中(選票無序),選出獲得票數最多的那個。

設定major、count兩個指標,major指向元素,count指向該元素出現的次數,遇到和major相同的元素,count+1;反之count-1.當count=0時,major變成下乙個元素。

注意:解法一當中包含了乙個sort函式,它本身就是乙個已經封裝好的排序函式,因此解法二使用指標的方式更加底層。

解法一:暴力解法

class

solution

:def

majorityelement

(self, nums: list[

int])-

>

int:

nums.sort(

)return nums[

len(nums)//2

]

解法二:

class

solution

(object):

defmajorityelement

(self, nums)

: count=

0 major=nums[0]

for i in nums:

if count==0:

major=i

if major==i:

count+=

1else

: count-=

1return major

Leetcode Array 27 移除元素

給你乙個陣列 nums 和乙個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後陣列的新長度。不要使用額外的陣列空間,你必須僅使用 o 1 額外空間並 原地 修改輸入陣列。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3 va...

Leetcode Array 1 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...

Leetcode Array 53 最大子序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。解法一 dp 動...