题目说明
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 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
提示:
1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums 为 无重复元素 的 升序 排列数组 -104 <= target <= 104
解题思路
- 循环遍历nums数组,将nums的每一项与target对比
- 如果nums[i]和target相等或者nums[i]大于target,将target插入i位置,返回i
- 遍历完成后不符合上述要求的说明nums中不存在target并且target比nums中的值都要大,则返回nums.length
代码实现
var searchInsert = function(nums, target) {
for(var i = 0;i < nums.length;i++) {
if(nums[i] === target || nums[i] > target) {
nums.splice(i,0,target)
return i;
}
}
return nums.length;
}