给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
方法一:(当初没看到条件是排序数组,想复杂了)
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let j = 0
if (!nums.length) return 0
if (nums[nums.length - 1] < target){
j = nums.length
return j
}
for (let i = 0; i < nums.length - 1; i++) {
if (nums[i] >= target) {
j = i
break
} else if (nums[i] < target && nums[i + 1] > target) {
j = i + 1
break
}
}
return j
};
方法二:
// 法二:
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert2 = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
if (nums[i] >= target) {
return i
}
}
return nums.length
};
方法三:
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert3 = function(nums, target) {
let j = 0
for (let i = 0; i < nums.length; i++) {
if (nums[i] < target) j++
else break
}
return j
};
如有更好解法,欢迎留言探讨。