题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
首先想到遍历数组:
var searchInsert = function(nums, target) {
if(target<nums[0]) return 0
for(let i=0;i<nums.length;i++){
if(nums[i]===target) return i
if((nums[i]<target&&nums[i+1]>target)||(nums[i]<target&&i===nums.length-1)) return i+1 //在中间插入和在末尾插入
}
};
然后发现还有更简洁的:一个判断用于寻找第一个大于等于target的元素,因为无论是大于还是等于返回的都是一样的索引。没找到则说明target最大,返回length
var searchInsert = function(nums, target) {
for(let i=0;i<nums.length;i++){
if(nums[i]>=target) return i
}
return nums.length
};