https://leetcode.com/problems/search-for-a-range/#/description
问题描述:
一个升序排列的数组,又重复值的那种,制定一个target,找到包含这个target的起始和终止位置,还是使用这般查找,分区间。
代码如下:
public class Solution {
public int[] searchRange(int[] nums, int target) {
int[] result=new int[2];
result[0]=findFirst(nums,target);
result[1]=findLast(nums,target);
return result;
}
private int findFirst(int[] nums, int target)
{
int index=-1;
int lo=0;
int hi=nums.length-1;
while(lo<=hi)
{
int mid=(lo+hi)/2;
if(target<=nums[mid])
{
hi=mid-1;
}else
{
lo=mid+1;
}
if(nums[mid]==target) index=mid;
}
return index;
}
private int findLast(int[] nums, int target)
{
int index=-1;
int lo=0;
int hi=nums.length-1;
while(lo<=hi)
{
int mid=(lo+hi)/2;
if(target>=nums[mid])
{
lo=mid+1;
}else
{
hi=mid-1;
}
if(nums[mid]==target) index=mid;
}
return index;
}
}