搜索插入位置

难度:简单

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

示例:

示例 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

思路分析:
实现方式一:for循环
遍历数组,找到数组中大于等于目标值的元素下标,则返回,如果数组中没有大于目标值的元素,则返回数组长度

实现方式二:二分查找法
将目标值与中间值进行比较,如果大于目标值,则继续在中间值左边比较新的中间值与目标值,小于目标值则继续在中间值右边比较新的中间值与目标值。直到目标值与中间值相对或left小于right

代码实现:

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

var searchInsert = function(nums, target) {
  let left = 0;
  let right = nums.length - 1;
  while (left <= right) {
    let mid = Math.round((left + right) / 2);
    if (target === nums[mid]) {
      return mid;
    } else if (target < nums[mid]) {
      right = mid - 1;
    } else {
      left = mid + 1;
    }
  }
  return left;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
最后更新时间: 10/16/2019, 8:47:58 PM