LeetCode--169--求眾數
阿新 • • 發佈:2018-09-15
span {} def .get 一個 object urn .so nbsp
問題描述:
給定一個大小為 n 的數組,找到其中的眾數。眾數是指在數組中出現次數大於 ? n/2 ?
的元素。
你可以假設數組是非空的,並且給定的數組總是存在眾數。
示例 1:
輸入: [3,2,3] 輸出: 3
示例 2:
輸入: [2,2,1,1,1,2,2] 輸出: 2
原來是讀題讀錯了。。。
方法1:
1 class Solution(object): 2 def majorityElement(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """7 nums.sort() 8 wid = len(nums) // 2 9 i = 0 10 n_count = 0 11 dicts = {} 12 while i < len(nums): 13 temp = nums[i] 14 n_count = nums.count(temp) 15 dicts[temp] = n_count 16 i += n_count 17 maxnum = -1 18for key in dicts: 19 if dicts[key] >= maxnum: 20 maxkey = key 21 maxnum = dicts[maxkey] 22 return maxkey
改進一:
1 class Solution(object): 2 def majorityElement(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int6 """ 7 res={} 8 for one in nums: 9 if one in res: 10 res[one]+=1 11 else: 12 res[one]=1 13 14 return max(res,key=res.get) #字典中值最大的鍵
改進二:
1 class Solution(object): 2 def majorityElement(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 nums.sort() 8 wid = len(nums) // 2 9 i = 0 10 n_count = 0 11 while i < len(nums): 12 n_count = nums.count(nums[i]) 13 if n_count > wid : 14 return nums[i] 15 i += n_count
官方:
1 class Solution(object): 2 def majorityElement(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 nums.sort() 8 return nums[len(nums)/2]
官方二:
1 class Solution(object): 2 def majorityElement(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 res=set(nums) 8 n=len(nums)/2 9 for item in res: 10 if(nums.count(item)>n): 11 return item
2018-09-14 21:50:56
LeetCode--169--求眾數