0%

35. search-insert-position

搜索插入位置

题目

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

你可以假设数组中无重复元素。

示例 1:

  • 输入: [1,3,5,6], 5
  • 输出: 2

示例 2:

  • 输入: [1,3,5,6], 2
  • 输出: 1

示例 3:

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

示例 4:

思路

  1. 暴力
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 时间复杂度O(n)
    class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
    res = len(nums)
    for i in range(len(nums)):
    if nums[i] >= target:
    res = i
    break
    return res
    2.二分 适用于有序数组且不重复
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class Solution {
    public:
    int searchInsert(vector<int>& nums, int target) {
    int left = 0;
    int right = nums.size() -1;
    while(left <= right){
    int middle = left + (right - left)/2;
    if(nums[middle] > target){
    right = middle -1;
    }else if(nums[middle] < target){
    left = middle+1;
    }else{
    return middle;
    }

    }
    return right +1 ;
    }
    };

    Refs

    代码随想录