心得:这个题也是二分查找,但是有个小技巧:当left>right的时候
left就是要插入的位置。
代码:
1 class Solution { 2 public int searchInsert(int[] nums, int target) { 3 if(nums==null||nums.length==0) 4 { 5 return 0; 6 } 7 int left=binaryFind(nums,0,nums.length-1,target); 8 /* 9 if(left==0) 10 return 0; 11 if(left==nums.length) 12 return nums.length; 13 if(nums[left]==target) 14 { 15 return left; 16 } 17 else 18 */ 19 return left; 20 21 } 22 public int binaryFind(int[] nums,int left,int right,int target) 23 { 24 int center=(left+right)>>>1; 25 if(left<=right) 26 { 27 if(nums[center]==target) 28 return center; 29 else if(target>nums[center]) 30 return binaryFind(nums,center+1,right,target); 31 else 32 return binaryFind(nums,left,center-1,target); 33 } 34 return left; 35 } 36 }