持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
输入: nums = [1,3,5,6], target = 5
输出: 2
题解
我们根据题意来进行操作,进入函数后我们先声明一个
index变量,在对出参nums使用indexOf方法,indexOf方法中接受的参数是出参target,我们将indexOf方法的返回值赋值给index变量,如果indexOf方法没有在出参nums中找到出参target则返回-1,接下来我们使用if语句进行判断当前index变量是否等于-1,如果与-1相等则是没有找到出参target,我们则使用push方法将出参target添加到出参nums的末尾,然后在使用sort方法对出参nums进行升序排序,排完序之后,在对出参nums使用indexOf方法进行查找出参target,并直接将indexOf方法的返回值返回出去,如果index变量不等于-1,我们则直接将index变量返回即可
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
var index = nums.indexOf(target);
if(index == -1){
nums.push(target);
nums.sort((a,b)=> a-b)
return nums.indexOf(target);
}
return index;
};
我们这里还可以使用
for循环的方式进行实现,我们对出参nums进行循环,在循环中我们先判断当前出参nums循环中的值和出参target是否相等,如果相等则直接返回变量i,如果不相等则去比较出参nums循环中的值是否比出参target大,如果是则直接返回变量i,如果上述条件不满足则去比较出参nums循环中的值是否大于或等于出参target,如果是则直接返回变量i,当循环结束后如果都没有返回值,则直接将当前出参nums的数据长度返回出去即可
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
if (nums[i] == target) {
return i;
}
if (nums[i] > target) {
return i;
}
if (nums[i] >= target) {
return i;
}
}
return nums.length;
};
坚持努力,无惧未来!