思路:
首先对numbers排序,然后找出数组中间的元素mid,最后判断mid出现的个数。(由于运用的快排时间复杂度最优为nlogn)
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
count=0
sortNumbers = sorted(numbers)
mid = sortNumbers[len(sortNumbers)/2]
for i in range(len(sortNumbers)):
if sortNumbers[i]==mid:
count+=1
if count > len(sortNumbers)/2:
return mid
return 0
首先调用python的collections库,运用Counter计算每个元素出现的个数,然后找有没有元素出现的次数大于数组长度一半。
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
import collections
c = collections.Counter(numbers)
half = len(numbers) / 2
for k in c:
if c[k] > half:
return k
return 0