堆
该专栏主要是一些关于堆的题解
jump_into_zehe
这个作者很懒,什么都没留下…
展开
-
K站中转内最便宜的航班
LeetCode 787K站中转内便宜的航班有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如果没有这样的路线,则输出 -1。示例 1:输入: n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]src = 0, dst = 2, k = 1输出: 200解释: 城市航班原创 2020-09-14 22:43:51 · 476 阅读 · 0 评论 -
合并K个排序链表--堆
LeetCode 23合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6解法:小顶堆实现解题思路:我们知道,归并排序是两个两个合并的,如果这道题直接使用归并排序的话,效率不高,因此,我们可以用最小堆来实现,首先,我们知道每一个链表都是有序的,所以我们知道最小的结点原创 2020-07-29 22:32:27 · 162 阅读 · 0 评论 -
前K个高频单词
LeetCode前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。原创 2020-07-29 19:56:18 · 142 阅读 · 0 评论 -
有序矩阵中第K小的元素--堆
LeetCode 378有序矩阵中第K小的元素给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [[ 1, 5, 9],[10, 11, 13],[12, 13, 15]],k = 8,返回 13。解法:二分查找class Solution { public int kthSmallest(int[][] matrix,转载 2020-07-29 18:17:48 · 110 阅读 · 0 评论 -
前K个高频元素--堆
LeetCode前K个高频元素给定一个非空的整数数组,返回其中出现频率前 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 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以原创 2020-07-29 16:57:16 · 105 阅读 · 0 评论 -
Java中重写优先队列比较器
匿名内部类PriorityQueue<Integer> queue = new PriorityQueue<>({ @Override public int compare(Integer o1, Integer o2){ //如果认为o1优先级比o2高,先出o1 compare返回<0的整数 //如果认为o2优先级比o1高,先出o2 compare返回>0的整数 //如果一样,返回0 re原创 2020-07-29 16:36:03 · 1418 阅读 · 0 评论