
优先队列(堆)
不会的优先队列
水之积也不厚,则其负大舟也无力
渣硕求个大厂实习。。。
展开
-
剑指 Offer 40. 最小的k个数
//解法一:分治最快class Solution { public int[] getLeastNumbers(int[] arr, int k) { if(k == 0 || arr.length == 0) return new int[0]; return quickSearch(arr, 0, arr.length - 1, k - 1); } private int[] quickSearch(int[] nums.原创 2021-02-07 17:18:31 · 82 阅读 · 0 评论 -
LeetCode 264. 丑数 II
官方题解//解法一:优先队列(最小堆)class Ugly { public int[] nums = new int[1690]; Ugly() { HashSet<Long> seen = new HashSet(); PriorityQueue<Long> heap = new PriorityQueue<Long>(); seen.add(1L); heap.add(1L); long currUgly, n.原创 2021-02-05 21:33:10 · 84 阅读 · 0 评论 -
剑指 Offer 59 - I. 滑动窗口的最大值
题解class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums == null || nums.length<k || k<1){ return new int[0]; } //#1 LinkedList<Integer> queue = new LinkedList<>(); .原创 2021-02-02 21:34:22 · 90 阅读 · 0 评论 -
LeetCode 218. 天际线问题
大佬题解//解法一:优先队列(PriorityQueue)class Solution { public List<List<Integer>> getSkyline(int[][] buildings) { List<List<Integer>> points = new ArrayList<>(); List<List<Integer>> results = new Arr..原创 2021-02-05 20:38:33 · 209 阅读 · 0 评论 -
LeetCode 215. 数组中的第K个最大元素
大佬题解//解法一:长度为len的小顶堆,前k个直接插入,后面的元素依次和堆顶比较是否出插入,如果插入就把堆顶先拿掉class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> q = new PriorityQueue<Integer>(k,(a, b)->a - b); for(int i = 0;i < k; .原创 2021-02-05 19:10:58 · 82 阅读 · 0 评论 -
LeetCode 23. 合并K个升序链表
官方题解解法一:优先队列(无空间优化)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; thi.原创 2021-02-05 18:32:32 · 100 阅读 · 0 评论 -
LeetCode 480. 滑动窗口中位数
官方题解class Solution { public double[] medianSlidingWindow(int[] nums, int k) { DualHeap dh = new DualHeap(k); for (int i = 0; i < k; ++i) { dh.insert(nums[i]); } double[] ans = new double[nums.length - k .原创 2021-02-03 07:55:31 · 103 阅读 · 0 评论 -
LeetCode 295. 数据流的中位数
题解class MedianFinder { private PriorityQueue<Integer> small; private PriorityQueue<Integer> large; /** initialize your data structure here. */ public MedianFinder() { //small的堆顶要小于large的堆顶 // 小顶堆 large = n.原创 2021-02-03 07:02:03 · 225 阅读 · 0 评论