9.5 - 高算7

九章高级算法班的最后一课,讲的是follow up问题:

1. Flatten Binary Tree to Linked List: 用递归的方法要好做一些,如果用iterative的方法比较麻烦

2. Flatten List: 用递归的方法会比较好做些

3. Subarray Sum:这道题直接利用前缀和数组就可以了

4. Flatten Nested List Iterator: 要用stack先把list倒过来,然后没遇到一个list就用同样的方法把它倒过来

5. Submatrix Sum: 如果是O(n4)的解法比较简单一些。如果想要O(n3)的复杂度,在确定上下边界后,再利用precompute的col的sum值,来计算差值为0的情况,就和第三题一样了。

6. Continuous Subarray Sum: 如果碰到负数就更新一下start的值

7. Continuous Subarray Sum II: 不是很会,处理这种可循环的数组的几种方法,1. 缺一项,也就是分为取第一个和不取第一个两种情况,2. 求反,如果求最大值,看看能不能转化为最小值, 3. 取倍数,也就是把当前arr扩大一倍再去求,4. 利用deque,如果数组可以删减的话,可以用deque一个一个处理

8. Kth Smallest Number in Sorted Matrix: 用heap倒是好做,不过这题还可以用二分法来做, 按值二分,对于每一个mid,数数小于等于mid值的个数,因为每一行都是排序的,所以对于每一行再做一个二分法bisect_right(row, mid)

9. Subarray Sum Closest: 先计算前缀和,然后排序,然后再依次比较,要用hash来记录每一个前缀和所对应的index

10. Maximum Gap: 利用bucketsort来做,不过即便是如此,还是挺难做的

11. Subarray Sum II:利用正数数组的前缀和数组的单调性,来做二分法,找到左右边界再把长度加入result里

12. Sliding Window Matrix Maximum:

13. Build Post Office: 利用bfs来搜索最短距离

14. Build Post Office II:和上一题很类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,067评论 2 36
  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 5,875评论 0 7
  • 主要讲了按值二分搜索和扫描线。按值二分很好理解,扫描线的想法能解决一系列题目,基本想法就是把start point...
    健时总向乱中忙阅读 1,202评论 0 0
  • 晚上看了一部电影。被嫌弃的松子的一生 感觉整部电影在用荒诞的手法来描写悲伤,而且画面颜色起伏剧烈,体验到了松子得到...
    狮子座的刺猬阅读 3,114评论 0 0