leetcode-34. Search for a Range

来源:互联网 发布:键盘修改软件 编辑:程序博客网 时间:2024/06/11 05:52

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;    }}
0 0