34. 在排序数组中查找元素的第一个和最后一个位置
题目:


题解:
java
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = new int[2];
if(nums.length==0) {
return new int[]{-1,-1};
}
//计算左边界
int l = 0;
int r = nums.length;
while(l<r) {
int mid = (l+r)/2;
if(nums[mid]<target) {
l=mid+1;
}
else {
r=mid;
}
}
res[0]=l;
//计算右边界
l = 0;
r = nums.length;
while(l<r) {
int mid = (l+r)/2;
if(nums[mid]<target+1) {
l=mid+1;
}
else {
r=mid;
}
}
res[1]=l-1;
if(res[0]<nums.length && nums[res[0]]==target) {
return res;
}
else {
return new int[]{-1,-1};
}
}
}