LeetCode热题100-前 K 个高频元素

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

哈希统计 + 小顶堆思路:

  1. 先用字典统计每个数字出现次数
  2. 用大小为 K 的小顶堆保存频率最高的 K 个
  3. 最后取出堆中元素
  4. 时间复杂度 O(n log k)
python 复制代码
import heapq
from collections import Counter
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        count = Counter(nums)
        topk = heapq.nlargest(k, count.keys(), key=lambda x:count[x])

        return topk
相关推荐
敲代码的苦138 分钟前
头歌 数据结构—消防资源调度
数据结构·算法
布莱克60514 分钟前
C++ 中 set 与 map 的区别详解
开发语言·c++·算法·哈希
lisw0521 分钟前
算法与软件的本质区别
驱动开发·算法·数学建模
上海红同电子24 分钟前
红同电子线束工厂100问|绝缘护套采购,材质PVC、TPE、PP该如何选型?
数据库·经验分享·职场和发展·产品运营·制造·材质
我不会插花弄玉24 分钟前
5.Hash 【由浅入深-redis】
redis·算法·哈希算法
j7~24 分钟前
IT 面试指南:从准备到 Offer 的完整路线图(校招 / 实习通用
面试·职场和发展·秋招·春招·实习面试·it后端
Nuanyt28 分钟前
LeetCode Hot 100 · 双指针 3 题 Java
java·笔记·算法·leetcode·双指针
小淮AI1 小时前
面试前 48 小时,怎样练表达和复盘:一份个人准备记录
面试·职场和发展
志起计算机编程1 小时前
Clickhouse的几个关键优势
算法
重生之小比特2 小时前
【算法拾光 7】双指针|两数之和 II - 输入有序数组 + 三数之和
算法