leetcode-半ばソートと-347を検索します。トップK頻繁な要素

71.43パーセントをmycode

クラスのソリューション(オブジェクト):
     DEF :topKFrequent(自己、NUMS、k)が
         "" " タイプNUMS:リスト[INT] タイプk:INT 
        :RTYPE:リスト[INT] 
        """ 
        もし ないNUMS:
             戻る[]
         からコレクションをインポートカウンタ
        S = カウンター(NUMS).most_common()
        RES = []
         のためのVal、カウント:S    
            res.append(ヴァル)
            場合でlen(RES)== K:
                 戻りRESを
        

参考:

アイデア:

heapq--このモジュールは、ヒープソートアルゴリズムの実装を提供します。バイナリヒープは、最大スタック親の子ノードが2以上である最小ヒープ親の子ノードである未満又は2に等しいです。

あなたが値の最大値や最小ヒープ範囲を取得する必要がある場合は、それを使用することができますheapq.nlargest() またはheapq.nsmallest() 機能

三番目の引数に各値を代入する次の例heapq.nlargestトラバーサルの2番目のパラメータは、順序付けのための番号のリストの最終組成物を得ました

インポートheapq
 から PPRINTのインポートPPRINTの
ポートフォリオ = [ 
    { ' 名前'' IBM '' 株式' 100、' 価格':91.1 }、
    { ' 名前'' AAPL '' 株式':50、' 価格'。 543.22 }、
    { ' 名前''FB' ' 株式' 200、' 価格':21.09 }、
    { ' 名前'' HPQ ' ' 株式':35、' 価格':31.75 }、
    { ' 名前'' YHOO ' ' 株式': 45、' 価格':16.35 }、
    { ' 名前'ACME' ' シェア':75、' 価格':115.65 } 
] 
安い = heapq.nsmallest(3、ポートフォリオ、キー= ラムダ S:S [ ' 価格" ])
高価 = heapq.nlargest(3、ポートフォリオ、キー= ラムダ S:S [ ' 価格' ])
PPRINT(安い)
PPRINT(高価な

""」
输出:
[{ '名前': 'YHOO'、 '価格':16.35、 '株式':45}、
 { '名前': 'FB'、 '価格':21.09、 '株式':200}、 
 { '名前': 'HPQ''価格':31.75、 '株式':35}]
[{ '名前': 'AAPL'、'価格':543.22、 '株式':50}、
 { '名前': 'ACME'、 '価格':115.65、 '株式':75}、
 { '名前': 'IBM'、 '価格':91.1、 '株式':100}]

各キーを介して、第三のパラメータのパラメータとしてソートで使用されるこれらの値の全ての組み合わせに対応する値を取得します

輸入heapqの
 クラスのソリューション(オブジェクト):
     DEF :topKFrequent(自己、NUMS、k)が
         "" " タイプNUMS:リスト[INT] 
        :Kタイプ:INT 
        :RTYPE:リスト[INT] 
        """ 
        もし ないK:
             リターン0 
        mydict = {}
         のためにNUMS:
             もし I mydict:
                mydict [I] + = 1
             さもなければ
                mydict [I] = 0 
        
        戻り heapq.nlargest(K、mydict.keys()、mydict.get)

 

おすすめ

転載: www.cnblogs.com/rosyYY/p/10975270.html