28.数组中出现次数超过长度一半的数字(python)

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
 1 class Solution:
 2     def MoreThanHalfNum_Solution(self, numbers):
 3         # write code here
 4         if len(numbers)==1:
 5             return numbers[0]
 6         nums = sorted(numbers)
 7         len_half = len(nums)//2
 8         count = 1
 9         i = 0
10         while i < len(nums)-1:
11             if nums[i]==nums[i+1]:
12                 count+=1
13             if len_half<count:
14                 return nums[i]
15             if nums[i]!=nums[i+1]:
16                 count=1
17             i+=1
18         return 0

 

posted @ 2019-12-19 10:55  Assange  阅读(241)  评论(0编辑  收藏  举报