求眾數 leetcode 刷題010

2021-09-20 02:25:55 字數 1552 閱讀 3895

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

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

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

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

輸出: 2

乍一看,這道題思路清晰,而且題目還給出提示,照理來說,應該這樣寫:

class solution(object):

def majorityelement(self, nums):

""":type nums: list[int]

:rtype: int

"""for i in nums:

if nums.count(i) > len(nums)/2:

return i

這樣一寫必然出錯,為啥,太耗時間,計算的次數太多不行的。

那怎麼寫呢

class solution(object):

def majorityelement(self, nums):

""":type nums: list[int]

:rtype: int

"""num = {}

for i in nums:

if i in num:

num[i] += 1

else:

num[i] = 1

return max(num.items(),key = lambda x:x[1])[0]

可以這樣寫,構造乙個字典,求出字典中 key 的最大值。

class solution(object):

def majorityelement(self, nums):

""":type nums: list[int]

:rtype: int

"""d = {}

for num in nums:

if num in d:

d[num] += 1

else:

d[num] = 1

for k, v in d.items():

if v > len(nums) // 2:

return k

這樣也可以。

看一下大佬**

class solution(object):

def majorityelement(self, nums):

""":type nums: list[int]

:rtype: int

"""return sorted(nums)[len(nums)/2]

大神一句話的事!省題很重要,題目中假設了每個陣列都有眾數。

求眾數先排序,取中間值。

leetcode刷題python 求眾數

給定乙個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在眾數。示例 1 輸入 3,2,3 輸出 3示例 2 輸入 2,2,1,1,1,2,2 輸出 2解法一 滿足題幹要求的眾數若存在,則僅可能存在乙個 python cla...

Leetcode刷題01 求兩數之和

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

LeetCode 刷題日記01

找到乙個陣列第三大的數並返回這個數,如果沒有就返回最大的數。param nums return var thirdmax function nums 現在陣列中沒有重複元素了 nums.sort a,b b a return nums.length 2 nums 2 nums 0 tips 這道題包...