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=0
right=len(ss)-1
while left<=right:
middle = (right - left) // 2+left
#在两头
if ss[0]>target:
print(0)
break
elif ss[len(ss)-1]<target:
print(len(ss))
break
#在中间
if ss[middle] < target:
left=middle+1
if left==right:
print(left+1)
break
elif ss[left]==target or (ss[left]<target and ss[right]>target and right==(left+1)):
print(left)
break
elif ss[middle]>target:
right=middle-1
if left==right:
print(left+1)
break
elif ss[left]==target or (ss[left]<target and ss[right]>target and right==(left+1)):
print(left)
break
if __name__=='__main__':
ss=input("s=").split()
target=str(input("target="))
#print(ss)
findplace(ss,target)
结果