1. dictionary
class Solution:
"""
@param: nums: a list of integers
@return: find a majority number
"""
def majorityNumber(self, nums):
if len(nums)==0:
return None
d = {}
for value in nums:
if value not in d:
d[value]=1
else:
d[value]+=1
if max(d.values())>0.5*len(nums):
return max(d, key=d.get)
else:
return None
2. use list.count(), Lintcode上可以過,leetcode上會顯示Time Exceed. 當做參考
class Solution:
"""
@param: nums: a list of integers
@return: find a majority number
"""
def majorityNumber(self, nums):
if len(nums)==0:
return None
max_count=-1000
for value in nums:
count = nums.count(value)
if count>max_count:
max_count=count
major=value
else:
continue
if max_count>0.5*len(nums):
return major
else:
return None
3. use set
class Solution:
"""
@param: nums: a list of integers
@return: find a majority number
"""
def majorityNumber(self, nums):
if len(nums)==0:
return None
return [ele for ele in set(nums) if nums.count(ele)>0.5*len(nums)][0]