Search Insert Position (E)
题目
Given a sorted array 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.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
题意
给定一个数组,找到给定值的下标;如果数组中不存在给定值,则返回该值应当插入位置的下标。
思路
直接二分查找。
代码实现
Java
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
} else {
return mid;
}
}
return left;
}
}
JavaScript
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function (nums, target) {
let left = 0, right = nums.length - 1
while (left <= right) {
let mid = Math.trunc((right - left) / 2) + left
if (nums[mid] < target) {
left = mid + 1
} else if (nums[mid] > target) {
right = mid -1
} else {
return mid
}
}
return left
}