[LC] 692トップKよく単語

言葉の非空のリストを考えると、返す  K  最も頻繁要素を。

あなたの答えは、最高から最低まで頻度順にソートされなければなりません。二つの単語が同じ周波数を持っている場合は、下のアルファベット順との言葉が最初に来ます。

例1:

[ "コーディング" "I"、 "愛"、 "leetcode"、 "I"、 "愛"、]、K = 2:入力
出力:[ "I"、 "愛"] 
説明: "I"と「愛「二つの最も頻繁に言葉です。
    「i」は、より低いアルファベット順に「愛」の前に来ることに注意してください。

 

例2:

入力:[ ""、 "日"、 "ある"、 "晴れ"、 ""、 ""、 ""、 "晴れ"、 "ある"、 "である"]、K = 4 
出力:[ 「」、「ある」、「晴れ」、「日」] 
説明:「」、「ある」、「晴れ」と「日」、4つの最も頻度の高い単語で
    ある発生4,3の数と、それぞれ2及び1。

 

注意:

  1. あなたは、想定し得る  kは  、常に有効である1つの≤  k個の  ユニークな要素の≤番号。
  2. 入力ワードは、小文字のみが含まれています。

 

ファローアップ:

  1. で、それを解決しようと  Onは  ログ  kの時間と)  ON)余分なスペースを。
1つの インポートコレクション
 2  インポートheapq
 3  
4  クラス要素(オブジェクト):
 5      デフ __init__ (自己、単語、FREQ):
 6          self.word = ワード
 7          self.freq = FREQ
 8      
9      DEF  __lt__ (他の自己):
 10          であれば、自己.freq =!other.freq:
 11              戻り self.freq < other.freq
 12          リターン other.word < self.word
 13  
14  クラス溶液(オブジェクト):
 15     DEF topKFrequent(自己、単語、K):
 16          "" " 
17          :タイプの単語:リスト[STR]
 18          :タイプK:int型
 19          :RTYPE:リスト[STR]
 20          """ 
21          my_dict = {}
 22          のための単語単語:
 23              場合単語my_dict:
 24                  my_dict [単語] + = 1
 25              26                  my_dict [単語] = 1 
 27          
28          freqs = []
 29          用のワードカウントmy_dict.items():
 30              heapq.heappush(freqs、(要素(単語、カウント)))
 31              場合(freqs)> lenをK:
 32                  heapq.heappop(freqs)
 33の          RES = []
 34           _ 範囲(K ):
 35              res.append(heapq.heappop(freqs).WORD)
 36          res.reverse()
 37          戻りRES
 38      
39         

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/11577480.html