言葉の非空のリストを考えると、返す K 最も頻繁要素を。
あなたの答えは、最高から最低まで頻度順にソートされなければなりません。二つの単語が同じ周波数を持っている場合は、下のアルファベット順との言葉が最初に来ます。
例1:
[ "コーディング" "I"、 "愛"、 "leetcode"、 "I"、 "愛"、]、K = 2:入力 出力:[ "I"、 "愛"] 説明: "I"と「愛「二つの最も頻繁に言葉です。 「i」は、より低いアルファベット順に「愛」の前に来ることに注意してください。
例2:
入力:[ ""、 "日"、 "ある"、 "晴れ"、 ""、 ""、 ""、 "晴れ"、 "ある"、 "である"]、K = 4 出力:[ 「」、「ある」、「晴れ」、「日」] 説明:「」、「ある」、「晴れ」と「日」、4つの最も頻度の高い単語で ある発生4,3の数と、それぞれ2及び1。
注意:
- あなたは、想定し得る kは 、常に有効である1つの≤ k個の ユニークな要素の≤番号。
- 入力ワードは、小文字のみが含まれています。
ファローアップ:
- で、それを解決しようと O(nは ログ kの時間と) O(N)余分なスペースを。
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