zoukankan      html  css  js  c++  java
  • 算法试题

    题目

     找出一个序列中出现频率最高的三个数

    解析

    思路一

    创建一个新字典, k 为 序列的值, 然后 v 的初始值 0, 然后循环序列进行计数, 

    然后进行新字典的处理..... 

    不行, 不好处理了. 此思路不行

    思路二

    利用 colletctions 的 Counter 模块, 内部有个方法可以解决 k 值问题

    答案

    答案一

    可以往下继续实现, 但是有点麻烦了

    li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5]
    
    d = dict.fromkeys(li, 0)
    print(d)  # {2: 0, 5: 0, 3: 0, 4: 0, 1: 0, 8: 0, 6: 0}
    
    for i in li:
        d[i] += 1
    
    print(d)  # {2: 2, 5: 3, 3: 1, 4: 1, 1: 4, 8: 1, 6: 2}
    """
    .......
    """

    答案二

    简单方便

    from collections import Counter
    
    li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5]
    
    c = Counter(li)
    print(c)  # Counter({1: 4, 5: 3, 2: 2, 6: 2, 3: 1, 4: 1, 8: 1})
    
    print(c.most_common(3))  # [(1, 4), (5, 3), (2, 2)]
  • 相关阅读:
    我开博客了,啦啦啦.
    cf593div2
    Comet OJ
    cf591div2abc
    cfround586ac
    cf589div2
    cf573div2
    Codeforces Round #569 (Div. 2)
    uva11729 水题
    luogu1984 [SDOI2008] 烧水问题
  • 原文地址:https://www.cnblogs.com/shijieli/p/10863433.html
Copyright © 2011-2022 走看看