【leetcode】33. 搜索旋转排序数组
题目内容 33. 搜索旋转排序数组 思路分析 本题是一道二分查找的进阶题目。 参考资料:官方题解 方法一:二分查找 做这道题目需要意识到一个性质:在搜索范围是旋转排序数组的情况下,二分的结果是左右两半有一半是有序的,有一半是乱序的。 而判断哪一部分乱序的方法为判断nums[0]和nums[mid]的大小: 若nu...
题目内容 33. 搜索旋转排序数组 思路分析 本题是一道二分查找的进阶题目。 参考资料:官方题解 方法一:二分查找 做这道题目需要意识到一个性质:在搜索范围是旋转排序数组的情况下,二分的结果是左右两半有一半是有序的,有一半是乱序的。 而判断哪一部分乱序的方法为判断nums[0]和nums[mid]的大小: 若nu...
题目内容 搜索插入位置 思路分析 本题其实就是C++的lower_bound函数的弱化版。 方法一:C++ STL 直接调lower_bound函数。 方法二:自己实现 直接按照模板来写,不同之处是如果没找到target的话需要返回插入的位置(left指针)。 代码 #include <vector>...
题目内容 278. 第一个错误的版本 思路分析 本题是一道二分查找题目,掌握二分查找的写法后写起来比较简单。关于二分查找的写法可以见我写了首诗,让你闭着眼睛也能写对二分搜索,可以说讲的非常清楚。 方法一:找左侧边界的二分查找 基本上按模板来就行,和模板不同的是本题的查找只有是和不是两种状态,而非平时的大于/小于/...
题目内容 209. 长度最小的子数组 思路分析 参考资料 方法一:前缀和+二分查找 由于题目所给的数组元素都是正整数,且要找到满足≥target的子序列。 因此,设题目所给数组的大小为n,可以创建一个大小为n+1的数组sums,其第i个元素为前i个数字的和,则问题转换为: 对于指定的下标i,求满足sums[j...
本题的代码实测正确,但思路分析部分个人感觉还有点含糊,请谨慎查看思路分析部分。