描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000,0<=数组元素<=10000
示例1
输入:[1,2,3,2,2,2,5,4,2]
返回值:2
示例2
输入:[3,3,3,3,2,2,2]
返回值:3
示例3
输入:[1]
返回值:1
解题思路:
1、使用set方法对数组进行去重
2、遍历去重后的数组,用count方法获取每个set后元组元素在原数组中出现的次数
3、如果出现次数大于原数组长度的一半则返回该元素。这里无需考虑长度的奇偶性
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
numbers2 = set(numbers)
flag = len(numbers)
for number in numbers2:
if numbers.count(number) > flag/2:
return number
网友评论