欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-04 11:44:42
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:...


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) 

本文地址:https://blog.csdn.net/sfakh/article/details/108247042