首页 > 试题广场 >

在数组中找到出现次数大于一半的数

[编程题]在数组中找到出现次数大于一半的数
  • 热度指数:1800 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个整型数组arr,请打印其中出现次数大于一半的数,如果没有这样的数,请输出-1。

输入描述:
输入包含两行,第一行包含一个整数n,代表数组长度,第二行包含n个数,代表数组arr


输出描述:
输出一个整数,代表出现次数大于一半的数,如果没有这样的数,请输出‘-1“。
示例1

输入

5
11 7 5 7 7

输出

7
示例2

输入

4
2 2 3 3

输出

-1

备注:
时间复杂度,额外空间复杂度
def max_count(arr):
	count = {}
	for i in set(arr):
		count[i] = arr.count(i)
	return count

num = input()
arr = input().split()
map = max_count(arr)
l = sorted(map.items(),key = lambda x:x[1])
if l[-1][-1] > len(arr)/2:
    print(l[-1][0])
else:
    print(-1)
case通过率为75.00%
有没有大神有完整的python解?
发表于 2020-05-18 21:07:10 回复(0)