解题思路:
一)哈希
lt = {}
for i in range(len(nums)):
lt[nums[i]] = lt.get(nums[i],0)+1 #将每个元素加入并计算个数
if lt[nums[i]] > len(nums)/2:
return nums[i]
二)排序计算
nums.sort()
return nums[len(nums)//2]
三)摩尔投票
下图为本人对其理解,清空并不是真正清空而是要换了对象
temp = 0 #保存元素
count = 0 #计数器
for i in range(len(nums)): #遍历列表
if count == 0:
temp = nums[i] #确定保存元素
count += 1
elif nums[i] == temp: #相等个数加一
count += 1
else:
count -= 1 #否则减一
return temp #最后的保存元素