给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
样例
给出数组[1,1,1,1,2,2,2],返回 1
这个问题可以用穷举法来解决,但是题目要求时间复杂度为O(n),所以这里不再解释穷举法。
使用字典来保存列表中出现的元素,如果它不包含在字典的键中,则把他加入字典,计数为1,如果已经存在这个键,计数加1。
最后循环一次字典,用值与列表长度的二分之一进行比较,如果符合条件,返回并退出循环。
class Solution:
"""
@param: nums: a list of integers
@return: find a majority number
"""
def majorityNumber(self, nums):
# write your code here
count_dict = {}
for i in range(len(nums)):
if nums[i] not in count_dict.keys():
count_dict[nums[i]] = 1
else:
count_dict[nums[i]] += 1
for i in count_dict.keys():
if count_dict[i] > len(nums)/2:
return i
test = Solution()
print(test.majorityNumber([1,1,1,1,2,2,2]))