CS577
Junyu08
好好学习,天天向上
展开
-
java PriorityQueue 最小、最大堆(正确版本)
一句话总结:默认最小堆,最大堆后面减前面import java.util.PriorityQueue; public class Test9 { public static void main(String[] args) { int[] a = {45,36,18,53,72,30,48,93,15,35}; //1,默认实现的是最小堆,元素按照natural ordering...原创 2020-01-05 04:35:38 · 3690 阅读 · 0 评论 -
面试算法|23. Merge k Sorted Lists的三种解法
23. Merge k Sorted Lists一道非常经典的题目。第二次做,学着用三种方法来解答,并且不断优化解法1 暴力每次都对KKK个list进行循环,找到最小的那个Node加入我们最后的结果list。time complexity:O(kN)O(kN)O(kN)NNN个数字,每个数字都要经过k次比较才会放进结果list中,不可取。解法2 priority queue每次都要找...原创 2019-06-20 05:00:19 · 1086 阅读 · 1 评论 -
面试问题 | TopK问题的三种解法 | O(nlogn) 以及 O(n) | 算法优化
TopK问题的三种解法 | O(nlogn) 以及 O(n)topk问题是一道很经典的问题,里面包含了数据结构及算法的应用。brute force我们不谈,接下来说一下,如何通过O(nlogn)以及O(n)求解1. 优先队列(弹k次)首先把整个数组压入一个heap当中(java中的priority_queue), 再依次弹出K各元素。这个方法的好处是,由于我们只需要K的元素,因此我们不需要对...原创 2019-06-12 11:33:57 · 1053 阅读 · 0 评论 -
面试算法53. Maximum Subarray
Leetcode 53. Maximum Subarray解法1. 使用dp, O(n)解法2. 使用divide and conquer对于每一个子数组都分成L,R两部分,分别寻找L,R中最大的子序列a. L中的最大b. R中的最大c. 横穿L,R的最大(与平面中的点同理)T(n) = 2T(n/2) + nT(n) = O(nlogn)class Solution { ...原创 2019-06-12 12:23:48 · 142 阅读 · 0 评论