给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 
你可以假设数组中无重复元素。 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 示例 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  
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class  Solution :    def  searchInsert (self, nums, target ):         right = len(nums)-1          left = 0          while (left < right):             temp_mid = (left+right)//2              if  nums[temp_mid] == target:                 return  temp_mid             elif   target < nums[temp_mid]:                 right = temp_mid             else :                 left = temp_mid + 1          return  left if  target <= nums[left] else  left+1  print(Solution().searchInsert([1 ,3 ,5 ,6 ], 7 )==4 ) print(Solution().searchInsert([1 ,3 ,5 ,6 ], 0 )==0 ) print(Solution().searchInsert([1 ,3 ,5 ,6 ], 2 )==1 ) print(Solution().searchInsert([1 ,3 ,5 ,6 ], 5 )==2 ) print(Solution().searchInsert([1 ], 0 )==0 ) 
 
执行用时:36 ms, 在所有 Python3 提交中击败了85.27%的用户 
内存消耗:15.2 MB, 在所有 Python3 提交中击败了11.56%的用户 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class  Solution   {    public  int  searchInsert (int [] nums, int  target)   {         int  n = nums.length;         int  left = 0 , right = n - 1 , ans = n;         while  (left <= right) {             int  mid = ((right - left) >> 1 ) + left;             if  (target <= nums[mid]) {                 ans = mid;                 right = mid - 1 ;             } else  {                 left = mid + 1 ;             }         }         return  ans;     } }