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