1. 程式人生 > >LeetCode--169--求眾數

LeetCode--169--求眾數

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 18
for 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: int
6 """ 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--求眾數