# 35.search-insert-position

## Statement

• Difficulty: Easy
• Tag: `数组` `二分查找`

``````输入: nums = [1,3,5,6], target = 5

``````

``````输入: nums = [1,3,5,6], target = 2

``````

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

``````

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

Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You must write an algorithm with `O(log n)` runtime complexity.

Example 1:

``````Input: nums = [1,3,5,6], target = 5
Output: 2
``````

Example 2:

``````Input: nums = [1,3,5,6], target = 2
Output: 1
``````

Example 3:

``````Input: nums = [1,3,5,6], target = 7
Output: 4
``````

Constraints:

• `1 <= nums.length <= 104`
• `-104 <= nums[i] <= 104`
• `nums` contains distinct values sorted in ascending order.
• `-104 <= target <= 104`

## Solution

``````from bisect import bisect_left
from typing import List

class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
return bisect_left(nums, target)
``````