题目:Search Insert Position
难度:medium
问题描述:
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
解题思路:比较简单,使用二分搜索,可以立可找到正确的位置,不过要仔细判别边界条件。具体代码如下:
public class Solution {
public int searchInsert(int[] nums, int target) {
if(nums==null) return 0;
int min=0;
int max=nums.length-1;
int len;
int nlen=nums.length;
if(target
nums[nlen-1]){
return nlen;
}
len=fenzhi(nums,min,max,target);
return len;
}
public int fenzhi(int[]nums,int min,int max,int target){
if((max-min)==1){
if(target>nums[min]){
return min+1;
}
}
if(max==min){
if(target<=nums[min]){
return min;
}else{
return min+1;
}
}
if(target==nums[(min+max)/2]){
return (min+max)/2;
}
else if(target