JavaScript:leetcode_35. 搜索插入位置

92 阅读1分钟

题目说明

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

 

示例 1:

输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2:

输入: nums = [1,3,5,6], target = 2 输出: 1 示例 3:

输入: nums = [1,3,5,6], target = 7 输出: 4  

提示:

1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums 为 无重复元素 的 升序 排列数组 -104 <= target <= 104

解题思路

  1. 循环遍历nums数组,将nums的每一项与target对比
  2. 如果nums[i]和target相等或者nums[i]大于target,将target插入i位置,返回i
  3. 遍历完成后不符合上述要求的说明nums中不存在target并且target比nums中的值都要大,则返回nums.length

代码实现

var searchInsert = function(nums, target) {
    for(var i = 0;i < nums.length;i++) {
        if(nums[i] === target || nums[i] > target) {
            nums.splice(i,0,target)
            return i;
        }
    }
    return nums.length;
}