JavaScript实现LeetCode第35题:搜索插入位置

题目描述:

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

示例 :

输入: [1,3,5,6], 5
输出: 2
输入: [1,3,5,6], 2
输出: 1
输入: [1,3,5,6], 7
输出: 4
输入: [1,3,5,6], 0
输出: 0

方法分析:

首先,我们来梳理几点关键信息: 

  1. 给定的数组是一个排序数组,并且我们假设其是升序排列的
  2. 数组中没有重复元素,也就意味着我们找到第一个满足条件的值即可返回其索引值(index)了
  3. 根据分析,目标值插入的位置无非就三种情况;数组开头、数组中间和数组末尾

下面,请上我们的代码。

代码实现:

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/

猜你喜欢

转载自blog.csdn.net/qq_30216191/article/details/81368281