35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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
二分查找法
def findplace(ss,target):left=0right=len(ss)-1while left<=right:middle = (right - left) // 2+left
#在两头if ss[0]>target:print(0)breakelif ss[len(ss)-1]<target:print(len(ss))break
#在中间if ss[middle] < target:left=middle+1if left==right:print(left+1)breakelif ss[left]==target or (ss[left]<target and ss[right]>target and right==(left+1)):print(left)breakelif ss[middle]>target:right=middle-1if left==right:print(left+1)breakelif ss[left]==target or (ss[left]<target and ss[right]>target and right==(left+1)):print(left)breakif __name__=='__main__':ss=input("s=").split()target=str(input("target="))#print(ss)findplace(ss,target)
结果