8.31 - 高算4

主要讲了按值二分搜索和扫描线。按值二分很好理解,扫描线的想法能解决一系列题目,基本想法就是把start point 和 end point都加入到一个list里,然后再排序,然后通过一根垂直的扫描线从左到右扫一遍,每遇到一个点就处理一次。

1. Sqrt(x): 典型的按值二分

2. Maximum Average Subarray: 最大的均值肯定在min(nums)和max(nums)之间,也就是说这是按值搜索的上限和下限。但是在确定条件的时候比较tricky,利用前缀和数组找到是否存在一个sum[j] > sum[i] i in range(0, j-k+1) and j>=k,如果能找到的话,说明当前这个mid找小了,更新左边界,否则更新右边界

3. Number of Airplanes in the Sky: 利用扫描线很容易解决

4. Divide Two Integers: 找divisor的个数的时候,每次二倍速的递增被减数。

5. Find Peak Element: 那其中某个边界做基准,然后二分法

6. First Bad Version: 简单的二分法

7. Find Peak Element II: 先找中间一行的最大值,然后可以知道在上半区还是下半区,然后找那个最大值的左右半区,依次找下去就可以了

8. Wood Cut: 砍木头,左边届是0右边界是max(wood)

9. Copy Books: 最小值是左边界,最大值是右边界,然后就是二分法,条件是copy完所有的书所需要的人小于分配的人数

10. Sqrt(x) II: 左边届和右边届的差值设置为0.000001这样

11. Find the Duplicate Number: 二分法,判断条件是数array中比mid小的元素的个数

12. Smallest Rectangle Enclosing Black Pixels: 以给定点为某一个边界,然后搜索(0, x), (x, m-1), (0, y), (y, n-1),也就是说因为全部都是连通域,所以这些点在x轴上和y轴上的投影也必定是连续的点

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

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • 3.4 说说相等和内部表示 在Lisp中主要有5种相等断言,因为不是所有的对象被创建的时候都是相等意义上的相等。数...
    geoeee阅读 5,825评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • 1. Two Sum 用hash可以得到O(n)时间的解法,用python中的enumerate函数,可以获得元素...
    Morphiaaa阅读 3,258评论 0 0
  • 新的一年要进行自我管理和提升,除了对自己过往一年的总结,重要的是给自己列出一个精进的清单。我认为有三个方面的本领对...
    山水之滴阅读 4,524评论 0 2