20180723剑指offer题29——数组中出现次数超过一半的数字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41819299/article/details/81171622

一、要求

 举个例子:

输入:[1, 2, 3, 2, 2, 2, 5, 4, 2]

输出:2

二、思路及代码

数组中出现次数超过一半的肯定只有1个数组,满足超过一半即可返回,不需要全部计数后判断

用字典进行辅助

def solution(L):
    num={}
    for i in L:
        if i in num:#简单写法:num[i]+=1 if num.get(i) else num[i]=1
            num[i]+=1
        else:
            num[i]=1
        if num[i]>len(L)/2:
            return i


a=[1, 2, 3, 2, 2, 2, 5, 4, 2]
print(solution(a))

三、运行结果

2

四、思考与总结

1.这道题 把判断超过一半写在计数的for循环中,可以节省运行时间

2.字典有个用来判断新关键词的简单写法:即用.get(key)

num[i]+=1 if num.get(key) else num[i]=1

猜你喜欢

转载自blog.csdn.net/weixin_41819299/article/details/81171622
今日推荐