题目描述
java
我写的垃圾代码,中间还出错了好几次。
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] ret = {-1,-1};
int l = 0;
int r = nums.length-1;
while(l<=r)
{
int mid = l+(r-l)/2;
int n = nums[mid];
if(n<target)
l = mid+1;
else
if(n>=target) {
r = mid - 1;
if(n == target)
ret[0] = mid;
}
}
int l1 = 0;
int r1 = nums.length-1;
while(l1<=r1)
{
int mid1 = l1+(r1-l1)/2;
int n = nums[mid1];
if(n>target)
r1 = mid1-1;
else if(n<=target) {
l1 = mid1 + 1;
if(n == target)
ret[1] = mid1;
}
}
return ret;
}
}
参考答案的代码
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] ret = {-1,-1};
int l = 0;
int r = nums.length-1;
while(l<r)
{
int mid = l+(r-l)/2;
if(nums[mid]<target)
l = mid+1;
else
r = mid;
}
if(nums[l]!=target)
return ret;
else
ret[0] = l;
r = nums.length-1;
while(l<r)
{
int mid = l+(r-l)/2+1;
// Make mid biased to the right
if (nums[mid]>target)
r = mid-1;
else
l = mid;
}
ret[1] = r;
return ret;
}
}