692. 前K個高頻單詞
阿新 • • 發佈:2020-11-23
class Solution(object): def topKFrequent(self, words, k): """ :type words: List[str] :type k: int :rtype: List[str] """ # 用字典統計每個單詞的數量 mydict = {} for word in words: if word in mydict: mydict[word] += 1 else: mydict[word] = 1 # 按value域降序排列,返回值是list mylist = sorted(mydict.items(), key=lambda x: x[1], reverse=True) print(mylist) # 設定臨時容器,存放相同value值的單詞 temp = [mylist[0][0]] i, j = 0, 1 ans = [] while j < len(mylist): if mylist[j][1] == mylist[i][1]: # value值相同則將單詞放入temp中,準備字母排序 temp.append(mylist[j][0]) # 指標後移 i += 1 j += 1 else: # 將相同value值的按字母排序,加到ans中 temp.sort() ans += temp # temp清空,準備記錄下一輪 temp = [] # 指標後移 i += 1 j += 1 # 開始記錄新的一輪 temp.append(mylist[i][0]) # 最後一輪的temp還沒有處理,別落下 temp.sort() ans += temp return ans[:k]