题目描述
Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
样例描述
Example 1:
Input: nums = [1,3,5,6], target = 5
Output: 2
Example 2:
Input: nums = [1,3,5,6], target = 2
Output: 1
Example 3:
Input: nums = [1,3,5,6], target = 7
Output: 4
Example 4:
Input: nums = [1,3,5,6], target = 0
Output: 0
Example 5:
Input: nums = [1], target = 0
Output: 0
Constraints:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums contains distinct values sorted in ascending order.
-104 <= target <= 104
思路
- 二分法,因为所给的数具备有序性
- 目的是找到等于target或者刚好大于target的值的位置
- 有可能target不存在,所以r的初始值得是n
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int i = 0, j = nums.length;
while (i < j){
int mid = i + j >> 1;
// 目的是找到等于target或者刚好大于target的值的位置
if (target <= nums[mid]) j = mid;
else i = mid + 1;
}
return j;
}
}