力扣 - 35. 搜索插入位置
题目
思路
- 类似在1-100中猜数字,用二分法最多只要猜7次就可以得到答案
- 这题也可以利用二分法不断向target逼近
- 我们可以将 target 存在 和 不存在 两种结果整合在一个判断中,即
target <= nums[mid]
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
int res = -1;
while (left <= right) {
int mid = ((right - left) >> 1) + left;
if (target <= nums[mid]) {
res = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return res;
}
}
复杂度分析
- 时间复杂度:\(O(logN)\),其中 N 为数组长度
- 空间复杂度:\(O(1)\)
我走得很慢,但我从不后退!

浙公网安备 33010602011771号