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
Idea: Pure binary search. Since mid=floor((left+right)/2), the last element left in the binary array is where left is pointing at. Just insert it after the last left.
Time: O(lgn) Space: O(1)
Code:
public class Solution {
public int searchInsert(int[] A, int target) {
int left=0;
int right=A.length-1;
while(left<=right)
{
int mid=(left+right)/2;
if(A[mid]==target)
return mid;
if(A[mid]<target)
left=mid+1;
else
right=mid-1;
}
return left;
}
}
No comments:
Post a Comment