二分+各种边缘条件的判断
1 class Solution(object): 2 def searchInsert(self, nums, target): 3 """ 4 :type nums: List[int] 5 :type target: int 6 :rtype: int 7 """ 8 length = len(nums) 9 i = 0 10 j = length - 1 11 if target > nums[j]: 12 return length 13 if target < nums[i]: 14 return 0 15 while j > i : 16 if nums[j] == target: 17 return j 18 elif nums[i] == target: 19 return i 20 if j - i == 1 and nums[i] < target and nums[j] > target: 21 return j 22 if nums[(i+j)/2] == target: 23 return (i+j)/2 24 elif nums[(i+j)/2] > target: 25 j = (i+j)/2 26 elif nums[(i+j)/2] < target: 27 i = (i+j)/2 28 return j 29