1. 程式人生 > 實用技巧 >692. 前K個高頻單詞

692. 前K個高頻單詞




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]