leetcode 35. 搜索插入位置
非递归写法
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while(left <= right) {
int mid = (left + right) / 2;
if(nums[mid] == target) {
return mid;
} else if(nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left;
}
}
递归写法
public static int searchInsert(int[] nums, int target) {
int right = nums.length - 1;
int left = 0;
return search_Insert(nums, target, left, right);
}
public static int search_Insert(int[] nums, int target, int left, int right) {
if (left > right)
return -1;
int mid = (left + right) >> 1;
if (target == nums[mid]) {
return mid;
} else if (target > nums[mid]) {
return search_Insert(nums, target, mid + 1, right);
} else {
return search_Insert(nums, target, mid, right + 1);
}
}