leetcode刷題python 求眾數

2021-09-23 18:50:17 字數 1620 閱讀 9925

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

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

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

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

輸出: 2

解法一:

滿足題幹要求的眾數若存在,則僅可能存在乙個

python**:

class solution(object):

def majorityelement(self, nums):

""":type nums: list[int]

:rtype: int

"""length = len(nums)

cnt = length // 2 + 1

cnt_dict = {}

for i in nums:

if i in cnt_dict:

cnt_dict[i] += 1

else:

cnt_dict[i] = 1

cnt_dict = sorted(cnt_dict.items(), key=lambda x:x[1])

print(cnt_dict)

if cnt_dict[-1][1] >= cnt:

return cnt_dict[-1][0]

else:

return 0

注意
x = [1,3,4,2]

y = sorted(x)

輸出為

y = [1,2,3,4]
對dict排序時需要制定按照哪個值來排序,並且返回的是乙個list,詳見:

值得注意的是,為了方便起見,這裡直接用了dict.items()將dict轉換成了乙個list

dict = 

dict.items() = [('one',1), ('two',2)]

解法二:

眾數出現的次數一定大於其他所有元素出現次數之和

python**

class solution(object):

def majorityelement(self, nums):

cnt = 0

res = nums[0]

for i in range(len(nums)):

if cnt == 0:

res = nums[i]

cnt = 1

elif res == nums[i]:

cnt += 1

elif res != nums[i]:

cnt -=1

# 判斷出現次數最多元素的次數是否滿足題幹要求

count = 0

for i in range(len(nums)):

if nums[i] == res:

count +=1

if count > len(nums) / 2:

return res

else:

return 0

Leetcode鍊錶刷題 pytho語言

為方便後續的使用查詢,記錄一下 函式包括 找到兩個單鏈表相交的起始節點 反轉單鏈表 刪除鍊錶中等於給定值 val 的所有節點 definition for singly linked list.class listnode object def init self,x self.val x self...

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

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