python-找出数组中出现次数大于n/2的元素

python-找出数组中出现次数大于n/2的元素

法一

利用模块中的Counter方法,直接得到列表中各个元素出现的次数,代码如下:

lst=[2,2,3,4,2,2,2,1,3]
def get_count1(lst):   
    from collections import Counter  # 引入计数器
    new_num = Counter(lst)  # 以类似于字典形式保存
    a=sorted(new_num.items(), key=lambda item: item[1], reverse=True)   ##按出现次数进行排序,以元组的形式返回
    if a[0][1]>len(lst)/2:
        print(a[0][0])
        return a[0][0]
get_count1(lst)

法二

利用集合的特性去重,再遍历整个数组,统计每个次数出现的次数,代码如下:

lst=[2,2,3,4,2,2,2,1,3]
def get_count2(lst):    ###法二:利用集合的特性去重,再遍历整个数组,统计每个次数出现的次数
    data=set(lst)   ###得到数组中所有的元素[1,2,3,4]
    for d in data:
        count=0
        for i in lst:
            if i==d:
                count+=1   ##统计元素出现的次数
        if count>len(lst)/2:
            print(d,"出现次数是",count)
            break
            return d
    return 0
get_count2(lst)

法三

直接利用list.count可以进行统计次数,代码如下:

lst=[2,2,3,4,2,2,2,1,3]
def get_count3(lst):        
    for i in lst:
        if lst.count(i)>len(lst)/2:
            print(i)
            break
get_count3(lst)

法四

前提是数组中有一个元素出现的次数一定大于n/2次,利用数学的特性,排序之后该元素一定在中间位置,代码如下:

lst=[2,2,3,4,2,2,2,1,3]
def get_count4(lst):        
    a=sorted(lst,reverse=True)
    print(a[len(lst)//2])
get_count4(lst)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值