题目
给定不同整数的排序数组和目标值,如果找到目标,则返回索引。如果没有,则返回按顺序插入的索引。
您必须编写具有“O(log n)”运行时复杂性的算法。
示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4
思路
- 二分查找
function searchInsert(nums: number[], target: number): number {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (target <= nums[mid]) {
right = mid - 1; // 只需左侧
} else {
left = mid + 1; // 只需右侧
}
}
return left;
}