
二分搜索
文章平均质量分 90
基础算法——二分搜索
SeeDoubleU
这个作者很懒,什么都没留下…
展开
-
二分搜索算法总结
文章目录二分搜索能够处理的问题代码注意事项时间复杂度分析题目汇总二分搜索能够处理的问题在有序的序列中检索特定值的情况。(标准二分搜索模版,题1)在形如“oooxxx”的序列中查找边界的情况。(oooxxx边界搜索,题4)能通过确定的边界将问题规模折半的情况。(half half问题,题10)倍增思想,通过反向使用二分搜索的思路来解决问题。(倍增问题,题13)代码注意事项start + 1 < end,该判定条件可以避免死循环、越界等情况。mid = start + (end -原创 2022-04-23 11:58:36 · 2206 阅读 · 0 评论 -
13 在大数组中查找(Search in a Big Sorted Array)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:在大数组中查找(Search in a Big Sorted Array)描述:给一个按照升序排序的非负整数数组。这个数组很大以至于你只能通过固定的接口 ArrayReader.get(k) 来访问第k个数(或者C++里是ArrayReader->get(k)),并且你也没有办法得知这个数组有多大。找到给出的整数target第一次出现的位置。你的算法需要在O(logk)的时间复杂度内完成,k为tar原创 2022-04-23 11:38:38 · 449 阅读 · 0 评论 -
12 在旋转排序数组中查找元素(Search in Rotated Sorted Array)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 在旋转排序数组中查找元素(Search in Rotated Sorted Array)lintcode:题号——62,难度——medium2 描述 给定一个有序数组,但是数组以某个元素作为支点进行了旋转(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值target进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重原创 2021-07-27 22:22:22 · 251 阅读 · 0 评论 -
11 寻找峰值(Find Peak Element)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 寻找峰值(Find Peak Element)lintcode:题号——75,难度——medium2 描述 给定一个整数数组(size为n),其具有以下特点:相邻位置的数字是不同的;A[0] < A[1] 并且 A[n - 2] > A[n - 1];假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。数组保证至原创 2021-07-25 00:19:53 · 1064 阅读 · 0 评论 -
10 寻找山型数组的顶点(Maximum Number in Mountain Sequence)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 寻找山型数组的顶点(Maximum Number in Mountain Sequence)lintcode:题号——585,难度——medium2 描述 给定包含n 个整数的山脉数组,即先增后减的序列,找到山顶(最大值),数组严格递增、严格递减。 样例1:输入:nums = [1, 2, 4, 8, 6, 3]输出:8 样例2:输入:nums = [10, 9, 8, 7原创 2021-07-21 23:32:45 · 938 阅读 · 0 评论 -
9 找到目标出现的区间范围(Search for a range)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 找到目标出现的区间范围(Search for a range)lintcode:题号——61,难度——medium2 描述 给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]。 样例1:输入:数组 = [],target = 9输出:[-1,-1]解释:9不在数组中。 样例2:输入:数组原创 2021-07-20 00:25:43 · 357 阅读 · 0 评论 -
8 搜索m*n矩阵中目标值的个数(Search a 2D Matrix II)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 搜索m*n矩阵中目标值的个数(Search a 2D Matrix II)lintcode:题号——38,难度——medium2 描述 搜索m×n矩阵中的值target,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。 样例1:输入:矩阵 = [[3,4]],target = 3输出:1解释:原创 2021-07-14 00:44:02 · 378 阅读 · 0 评论 -
7 搜索m*n矩阵中的目标值(Search a 2D Matrix)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 搜索m*n矩阵中的目标值(Search a 2D Matrix)lintcode:题号——28,难度——easy2 描述 搜索 m × n矩阵中的值 target ,这个矩阵具有以下特性:每行中的整数从左到右是排序的;每行的第一个数大于上一行的最后一个整数。 样例1:输入:矩阵 = [[5]], target = 2输出:false解释:矩阵中没有包含2,返回false。 样原创 2021-07-10 01:06:06 · 686 阅读 · 0 评论 -
6 最小覆盖矩形(Smallest Rectangle Enclosing Black Pixels)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 最小覆盖矩形(Smallest Rectangle Enclosing Black Pixels)lintcode:题号——600,难度——hard2 描述 一个由二进制矩阵表示的图,0 表示白色像素点,1 表示黑色像素点。黑色像素点是联通的,即只有一块黑色区域。像素是水平和竖直连接的,给一个黑色像素点的坐标 (x, y) ,返回囊括所有黑色像素点的矩阵的最小面积。 样例1:输入:[“原创 2021-07-08 01:59:51 · 567 阅读 · 0 评论 -
5 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)
文章目录1 题目2 描述3 思路3.1 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 寻找旋转排序数组中的最小值lintcode:题号——159,难度——medium2 描述 假设一个按升序排好序的数组在其某一未知点发生了旋转(比如0 1 2 4 5 6 7 可能变成4 5 6 7 0 1 2)。你需要找到其中最小的元素。(可以假设数组中不存在重复元素。) 名词:RSA:旋转排序数组,即Rotated Sorted Array 样例1:输入:[4, 5, 6,原创 2021-07-04 00:11:38 · 184 阅读 · 0 评论 -
4 第一个坏版本(First Bad Version)
文章目录1 题目2 描述3 思路3.2 图解3.2 时间复杂度3.3 空间复杂度4 源码1 题目 第一个坏版本(First Bad Version)lintcode:题号——74,难度——medium2 描述 代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错。(调用 isBadVersion 的次原创 2021-06-30 21:51:21 · 284 阅读 · 1 评论 -
2/3 寻找目标出现的初始or最后位置(First Position of Target/Last Position of Target)
文章目录1 题目2 描述3 思路3.2 图解3.2 时间复杂度3.3 空间复杂度4 源码5 相同类型问题1 题目 寻找目标出现的初始位置(First Position of Target)2 描述 给定一个排序的整数数组(升序)和一个要查找的整数 target,用O(log n)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例:输入:数组 = [1,4,4,5,7,7,8,9,9,10], target = 4输出:13 思路原创 2021-06-29 23:43:30 · 276 阅读 · 0 评论 -
1 经典二分搜索(Classical Binary Search)
1 经典二分搜索(Classical Binary Search)文章目录1 经典二分搜索(Classical Binary Search)1 描述2 思路2.1 图解3 细节3.1 模版3.2 注意事项4 源码1 描述Find any position of a target number in a -sorted array-. Return -1 if target does not exist.在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回 -1。样例 1:输入:原创 2021-06-27 12:34:47 · 295 阅读 · 0 评论