C/C++教程

leetcode34_排序数组第一个和最后一个

本文主要是介绍leetcode34_排序数组第一个和最后一个,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
public int[] searchRange(int[] nums, int target) {
    int[] ans = {-1,-1};
    if(nums.length == 0) return ans;
    else if(nums.length == 1) {
        if(nums[0] == target) {
            ans[0] = 0;
            ans[1] = 0;
            return ans;
        }
    }
    if (nums.length < 2) return ans;
    int l = 0, r = nums.length-1;
    while (l < r) {
        int mid = l + r>> 1;
        // 找到第一个大于等于target的数字
        if(nums[mid] >= target) r = mid;
        else l = mid + 1;
    }
    if(nums[l] == target) ans[0] = l;
    l = 0;
    r = nums.length ;
    while (l < r) {
        int mid = l + r >> 1;
        // 找到第一个大于target的数字
        if(nums[mid] > target) r = mid;
        else l= mid + 1;
    }
    System.out.println(l + ":" + r);
    l --;
    if(0 <= l && l < nums.length) {
        if(nums[l] == target) ans[1] = l;
    }
    return ans;
}
这篇关于leetcode34_排序数组第一个和最后一个的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!