![]()
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
"""
# 方法1
# 时间复杂度:O(n) 空间复杂度:O(n)
# 构造2个list,一个存储不相同的元素,一个存储不相同元素出现的次数
newArray = list(set(numbers))
lst = [0]*len(newArray)
for i in range(len(numbers)):
if numbers[i] in newArray:
lst[newArray.index(numbers[i])] += 1
for j in range(len(lst)):
if lst[j] > len(numbers)/2:
return newArray[j]
return 0
"""
# 方法2
# 时间复杂度:O(n) 空间复杂度:O(n)
# 构造字典dict,key=元素,value=出现次数
numdict = {}
for item in numbers:
if item in numdict:
numdict[item] += 1
else:
numdict[item] = 1
if numdict[item] > (len(numbers)/2):
return item
return 0
# 方法3
# 如果想要空间复杂度为O(1),时间复杂度为O(n)
# 思路没懂