LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)

Posted 伊甸一点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)相关的知识,希望对你有一定的参考价值。

 
Problem: 在已知递减排序的数组中,查找到给定数字的起止下标
 
采用两遍扫描;
第一遍扫描得到给定数字的起始下标,(从下标i==0开始到nums.lenght-1)
第二遍扫描从第一遍扫描得到的下标开始进行扫描 
 
参考代码:
package leetcode_50;


/***
 * 
 * @author pengfei_zheng
 * 数组中找到target起止下标
 */
public class Solution34 {
    public static int[] searchRange(int[] nums, int target) {
        
        int start = 0, end = nums.length-1;
        
        int []ans = {-1,-1};
        
        while(start<=end){
                int mid = (start + end)/2;
                if(nums[mid] >= target)
                    end = mid - 1;
                else
                    start = mid + 1;
            if(nums[mid]==target){
                    ans[0]=mid;
            }
        }
        start = ans[0]==-1 ? 0 : ans[0];
        end=nums.length-1;
        while(start<=end){
                int mid = (start+end)/2;
                if(nums[mid]<=target)
                    start = mid + 1;
                else 
                    end = mid - 1;
                if(nums[mid]==target)
                    ans[1]=mid;
        }
        return ans;
    }
    public static void main(String[]args){
        int []nums = {5, 7, 7, 8, 8, 10};
        int []ans = {0};
        ans = searchRange(nums,8);
        for(int item:ans){
            System.out.print(item+" ");
        }
    }
}

 

以上是关于LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode OJ 34. Search for a Range

LeetCode OJ 34Search for a Range

[LeetCode]34. Search for a Range

Leetcode--34--Search for a Range

[leetcode-34-Search for a Range]

LeetCode34: Search for a Range