题目:
Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1]
.
For example,
Given [5, 7, 7, 8, 8, 10]
and target value 8,
return [3, 4]
.
二分查找
参考代码如下:
http://blog.csdn.net/linhuanmars/article/details/20593391
public class Solution {
public int[] searchRange(int[] A, int target) {
int[] res = {-1,-1};
if(A==null || A.length==0)
{
return res;
}
int ll = 0;
int lr = A.length-1;
while(ll<=lr)
{
int m = (ll+lr)/2;
if(A[m]<target)
{
ll = m+1;
}
else
{
lr = m-1;
}
}
int rl = 0;
int rr = A.length-1;
while(rl<=rr)
{
int m = (rl+rr)/2;
if(A[m]<=target)
{
rl = m+1;
}
else
{
rr = m-1;
}
}
if(ll<=rr)
{
res[0] = ll;
res[1] = rr;
}
return res;
}
}