朴素算法Bare Algo

堆与优先队列

利用堆结构实现高效的最值查找和动态排序。

算法题

(9)
215. 数组中的第K个最大元素
中等
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
数组堆快速选择
347. 前 K 个高频元素
中等
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
数组哈希表堆
23. 合并K个升序链表
困难
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。
链表堆分治
295. 数据流的中位数
困难
中位数是有序整数列表中间的数。如果列表长度是偶数,则没有中间的数,中位数是两个中间数的平均值。实现 MedianFinder 类。
堆设计
703. 数据流中的第 K 大元素
简单
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
堆设计
378. 有序矩阵中第 K 小的元素
中等
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。
数组二分查找堆
973. 最接近原点的 K 个点
中等
给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,并且给定一个整数 k ,返回离原点 (0,0) 最近的 k 个点。
几何堆快速选择
1046. 最后一块石头的重量
简单
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。
数组堆
692. 前K个高频单词
中等
给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。
哈希表字符串堆

实际应用

(4)
请求/任务调度
困难
在前端并发控制或任务调度器中,使用优先队列管理任务。高优先级任务(如用户交互)优先执行,延时任务可用最小堆管理。
优先队列()调度并发控制
TopK 统计
中等
在前端数据分析或监控面板中,统计热门搜索、排行榜、或埋点数据的 TopN。维护一个大小为 K 的堆,实时更新排行榜。
最小堆统计数据可视化
流式数据中位数
困难
在处理实时流式数据(如股票价格、传感器数据)时,使用两个堆(大顶堆+小顶堆)实时计算中位数或分位数,用于图表展示。
双堆数据流实时计算
多路归并
中等
合并多个有序数据源(如多个分页接口结果、不同来源的新闻流、搜索联想词)。利用堆维护每路的当前最小值,实现高效归并。
堆数据合并搜索