1. 程式人生 > >LeetCode 347. 前K個高頻元素

LeetCode 347. 前K個高頻元素

給定一個非空的整數陣列,返回其中出現頻率前 高的元素。

例如,

給定陣列 [1,1,1,2,2,3] , 和 k = 2,返回 [1,2]

注意:

  • 你可以假設給定的 總是合理的,1 ≤ k ≤ 陣列中不相同的元素的個數。
  • 你的演算法的時間複雜度必須優於 O(n log n) , 是陣列的大小。

class Solution:
    def topKFrequent(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: List[int]
        """
        Dict = {}  
        for i in range(len(nums)):  
            if nums[i] in Dict:  
                Dict[nums[i]] = Dict[nums[i]] + 1  
            else:  
                Dict[nums[i]] = 1  
          
        output = sorted(Dict.items(),key=lambda e:e[1],reverse=True)  
        #sorted 將字典型欄位變為list key為排序標準,支援函式,reverse=True 降序 
        final = []  
        for i in range(k):  
            final.append(output[i][0])  
        return final