35. 搜索插入位置-LeetCode

心得:这个题也是二分查找,但是有个小技巧:当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 }

 

posted @ 2019-05-24 12:39  pc_m  阅读(139)  评论(0编辑  收藏  举报