35. Search Insert Position

时间:2019-04-20
本文章向大家介绍35. Search Insert Position,主要包括35. Search Insert Position使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. 原始题目

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

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

示例 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

2. 思路

还是考二分法。对于没有重复元素的排序序列,二分法如果找到该元素则返回。找不到的话,high指针会和low交错。即high+1=low。此时的high+1或low-1都将会返回该元素应该插入的位置。

3. 解题

 1 class Solution:
 2     def searchInsert(self, nums: List[int], target: int) -> int:
 3         if not nums:return 0
 4         if nums[0]>target: return 0 
 5         if nums[-1]<target: return len(nums)
 6         
 7         low, high = 0, len(nums)-1         # 纯二分法
 8         while(low<=high):
 9             mid = int((low+high)/2)
10             if nums[mid]==target: return mid
11             elif nums[mid]<target: low=mid+1
12             else: high=mid-1
13         return high+1                            # 返回位置