题目:
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.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
我的解答(打败了99.97%的解答):
class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
int midIndex = len / 2;
int i = -1;
int j = len;
while(len != 0) {
if(nums[midIndex] == target) {
return midIndex;
} else if(nums[midIndex] > target) { //left, change j
j = midIndex;
len = j-i-1;
midIndex = j-len/2-1;
} else if(nums[midIndex] < target) { //right, change i
i = midIndex;
len = j-i-1;
midIndex = i+len/2+1;
}
}
return j;
}
}