题目描述:
题目分析:
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
源码:
class Solution:
"""
@param A : a list of integers
@param target : an integer to be inserted
@return : an integer
"""
def searchInsert(self, A, target):
# write your code here
if A is None: return None
if A == []: return 0
n = len(A)
if A[0] >= target: # 最小的数大于target,插入0;相等,也返回0
return 0
# 这里的if分支可省略
# if A[-1] == target: # 最大的数等于target,返回长度n-1
# return n-1
# elif A[-1] < target: # 最大的数小于target,插入末尾,返回长度n
# return n
# 其余情况,反向遍历列表,找到第一个小于等于target的数
for i in range(-1,-n,-1):
if A[i] > target: # 大于target,继续循环
continue
elif A[i] == target: # 等于,返回n+i;因为i是负数,反向循环
return n+i
else:
return n+i+1 # 小于target,在n+i位置之后插入元素,返回n+i+1