![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
解题思想-二分查找
文章平均质量分 70
二分查找
overlordmax
这个作者很懒,什么都没留下…
展开
-
74. 搜索二维矩阵
1.题目描述编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:(1)每行中的整数从左到右按升序排列。(2)每行的第一个整数大于前一行的最后一个整数。示例 1:示例 2:提示:(1)m == matrix.length(2)n == matrix[i].length(3)1 <= m, n <= 100(4)-10^4 <= matrix[i][j], target <= 10^42.思路输入的 m x n 矩阵可以视为长原创 2021-03-25 00:03:00 · 255 阅读 · 0 评论 -
69. x 的平方根
1.题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:示例 2:2.二分法一个数的平方根最多不会超过它的一半3.代码class Solution {public: int mySqrt(int x) { if(x <= 1){ return x; } int left = 0, rig原创 2020-08-31 19:43:40 · 99 阅读 · 0 评论 -
29. 两数相除
1.题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:示例 2:提示:1.被除数和除数均为 32 位有符号整数。2.除数不为 0。3.假设我们的环境只能存储 32 位有符号整数,其数值范围是原创 2020-08-24 19:10:36 · 350 阅读 · 0 评论 -
4. 寻找两个有序数组的中位数
4. 寻找两个有序数组的中位数1.题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。示例 1:示例 2:2.思路 中位数的定义:代表一个样本、种群或 [概率分布]中的一个数值,其可将数值集合划分为相等的上...原创 2020-03-29 13:20:19 · 123 阅读 · 0 评论 -
33. 搜索旋转排序数组
33. 搜索旋转排序数组1.题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:示例 2:2.思路1...原创 2020-03-08 22:21:28 · 93 阅读 · 0 评论 -
300. 最长上升子序列
300. 最长上升子序列1.题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)O(n2)O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(nlogn)O(n log n)O(nlogn) 吗?2.方法1(动态规划) 定义dp[i]dp[i]dp[i] ...原创 2020-02-13 14:20:35 · 172 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置1.题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:示例 2:2.思路(二分法) 可以用二分查找找出第一个位置和最后一个位置,但是寻找的方法有所不...原创 2020-02-19 23:04:51 · 119 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
153. 寻找旋转排序数组中的最小值1.题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:示例 2:2.思路(二分法)mid = left + (right - left) / 2,如果nums[mid] <...原创 2020-02-19 22:22:27 · 67 阅读 · 0 评论 -
278. 第一个错误的版本
278. 第一个错误的版本1.题目描述你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 ...原创 2020-02-19 21:50:10 · 157 阅读 · 0 评论 -
540. 有序数组中的单一元素
540. 有序数组中的单一元素1.题目描述给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:示例 2:注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。2.思路(二分法) 1.令 index 为 Single Element 在数组中的位置。在 index 之后,数组中原来存在的成对状态被改变。如果 ...原创 2020-02-19 15:34:57 · 297 阅读 · 0 评论 -
744. 寻找比目标字母大的最小字母
744. 寻找比目标字母大的最小字母1.题目描述给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。数组里字母的顺序是循环的。举个例子,如果目标字母target = ‘z’ 并且有序数组为 letters = [‘a’, ‘b’],则答案返回 ‘a’。示例:注:1.letters长度范围在[2, 10000]区间内。...原创 2020-02-19 14:47:30 · 75 阅读 · 0 评论 -
求平方根
求平方根1.题目描述求一个数的平方根,精度要求 e < 10^-6;2.思路(二分法)定义一个最小值left和最大值right,把一个数取一个中间值mid = left+(right-left)/2,然后平方,如果平方mid*mid大于该数值,就把中间值赋给最大值,否者就把中间值赋给最小值,一直循环,直到取到想要的精度为止3.代码//二分法 double sqrt1(doubl...原创 2020-02-19 14:28:24 · 133 阅读 · 0 评论 -
69. x 的平方根
69. x 的平方根1.题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:示例 2:2.思路 一个数 x 的开方 sqrt 一定在 0 ~ x 之间,并且满足 sqrt == x / sqrt。可以利用二分查找在 0 ~ x 之间查找 sqrt。 对于 x...原创 2020-02-18 23:22:42 · 74 阅读 · 0 评论