34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

思路:

使用两次二分查找,第一次找大于等于target的第一个位置,第二次找大于等于target + 1的第一个位置-1。

总结:

二分条件可以灵活地转换。

代码:

java 复制代码
class Solution {
    public int[] searchRange(int[] nums, int target) {
        int n = nums.length;;
        int left = binary_search(nums, target);
        if(left == n || nums[left] != target) return new int[]{-1, -1};
        int right = binary_search(nums, target + 1);
        return new int[]{left, right - 1};
    }
    // >= 
    private int binary_search(int[] nums, int target) {
        int n = nums.length;
        int l = 0, r = n - 1;
        while(l <= r) {
            int mid = l + (r - l) / 2;
            if(nums[mid] < target) {
                l = mid + 1;
            }
            else {
                r = mid - 1;
            }
        }
        return l;
    }
}
相关推荐
不知道取啥耶4 小时前
C++ 滑动窗口
数据结构·c++·算法·leetcode
我想吃烤肉肉6 小时前
leetcode-sql数据库面试题冲刺(高频SQL五十题)
数据库·sql·leetcode
迪小莫学AI9 小时前
LeetCode 2588: 统计美丽子数组数目
算法·leetcode·职场和发展
2301_8074492012 小时前
字符串相乘——力扣
java·算法·leetcode
yadanuof13 小时前
leetcode hot100 图论
leetcode·深度优先·图论
xiao--xin13 小时前
LeetCode100之二叉搜索树中第K小的元素(230)--Java
java·算法·leetcode·二叉树·树的统一迭代法
记得早睡~16 小时前
leetcode654-最大二叉树
javascript·数据结构·算法·leetcode
圣保罗的大教堂16 小时前
leetcode 2070. 每一个查询的最大美丽值 中等
leetcode
田梓燊17 小时前
leetcode 95.不同的二叉搜索树 Ⅱ
数据结构·算法·leetcode
孑么20 小时前
力扣 编辑距离
java·数据结构·算法·leetcode·职场和发展·贪心算法·动态规划