题目:
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
案例 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复制代码
分析:
这个题目的难度是easy,确实难度不大,分清楚会有哪几种情况就好啦~
1.如果目标值存在于数组,直接返回索引值;
2.如果目标值不存在于数组,返回应该插入的索引值;
答案:
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
if (nums.indexOf(target) != -1) {
return nums.indexOf(target); // 如果存在返回索引
} else {
for (var i = 0; i<nums.length; i++) {
if(target < nums[i]) {
// 比较target和num[i]的大小,如果target小于数组中某一元素,返回这个元素的索引也就是i,i就是target应该插入的位置;
return i;
}
}
return nums.length; // 如果target比所有元素都大,那么target应该插到最后一个,索引可以是nums.length
}
};
复制代码
突然想起来前几天在工作中也用到过这种需求,平时多刷刷题还是对自己提升很有帮助的,加油?
我是月铭泽,欢迎各位童鞋交流指正~