分治法
Junyu08
好好学习,天天向上
展开
-
算法|分治法|Divide and conquer|17. Letter Combinations of a Phone Number
17. Letter Combinations of a Phone Number本题目采用了分治法,从中间切开后分别计算两边的所有可能组合。最后将两边的结果进行组合注意:Map那里是双大括号class Solution { Map<String, String> map = new HashMap<String, String>() { { ...原创 2019-06-19 03:20:13 · 86 阅读 · 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 评论