Leetcode——347. 前K個高頻元素

大寫的ZDQ發表於2019-03-08

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

示例 1:

輸入: nums = [1,1,1,2,2,3], k = 2
輸出: [1,2]
示例 2:

輸入: nums = [1], k = 1
輸出: [1]
說明:

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

思路:

建立幾個木桶,然後把資料分別放入木桶中去,這裡可以用字典,記錄個數。

def topFrequecy(nums,k):
     count_list  = dict()
     result = list()
     for i in nums:
          count_list[i] = count_list.get(i,0) + 1	#記錄個數
     t = sorted(count_list.items(),key = lambda l: l[1], reverse = True)
     for i in range(k):
          result.append(t[i][0])	#value排好了序,從大到小
     return result
def main():
     nums = [1,1,2,2,2,3]
     k=2
     print(topFrequecy(nums,k))
main()

相關文章