题目描述:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
示例 :
输入: [1,3,5,6], 5 输出: 2
输入: [1,3,5,6], 2 输出: 1
输入: [1,3,5,6], 7 输出: 4
输入: [1,3,5,6], 0 输出: 0
方法分析:
首先,我们来梳理几点关键信息:
- 给定的数组是一个排序数组,并且我们假设其是升序排列的
- 数组中没有重复元素,也就意味着我们找到第一个满足条件的值即可返回其索引值(index)了
- 根据分析,目标值插入的位置无非就三种情况;数组开头、数组中间和数组末尾
下面,请上我们的代码。
代码实现:
var searchInsert = function(nums, target) {
//遍历数组
for (var i = 0,len = nums.length; i < len; i++) {
//这里处理值被插在数组头和数组中的情况
if (nums[i] >= target ) {
return i;
}
}
//这里处理值被插在数组尾的情况
return len;
}
代码解析:
我们首先对数组进行遍历,这里要处理三种情况,即目标值应该被插在数组开头、数组中间还是数组末尾。
该算法的时间复杂度为:O(n)
该算法的空间复杂度为:O(1)
相关链接:https://leetcode-cn.com/problems/search-insert-position/description/