力扣HOT100之二分查找: 34. 在排序数组中查找元素的第一个和最后一个位置

这道题完全没有思路,直接去看灵神的题解了,这道题的大概思路就是额外定义一个二分查找函数,对于给定数组nums和目标值target,返回第一个大于等于target的元素下标,当返回的下标处的元素恰好等于target时,该下标就是区间的开始位置,若不等于target,则整个数组中都没有target,返回[-1, -1]即可。如果没有返回[-1, -1],则说明数组中至少有一个target,我们需要进一步寻找结束位置。至于结束位置,我们直接调用该二分查找函数,查找target + 1,返回的下标一定是第一个大于等于target + 1的元素下标,不管数组中是否真的有target + 1,此时下标的左边就是最后一个target,因此我们直接返回起始坐标和结束坐标。

cpp 复制代码
class Solution {
public:
    int Binary_search(vector<int>& nums, int target){
        int left = 0, right = nums.size();  //搜索区间为[left, right)
        int mid;
        while(left < right){
            mid = (left + right) / 2;
            if(nums[mid] >= target)
                right = mid;
            else left = mid + 1;
        }
        return left;
    }
    vector<int> searchRange(vector<int>& nums, int target) {
        int start = Binary_search(nums, target);
        if(start == nums.size() || nums[start] != target)
            return {-1, -1};
        int end = Binary_search(nums, target + 1) - 1;
        return {start, end};
    }
};
相关推荐
沐怡旸几秒前
【算法--链表】138.随机链表的复制--通俗讲解
算法·面试
anlogic6 分钟前
Java基础 9.10
java·开发语言·算法
薛定谔的算法9 分钟前
JavaScript单链表实现详解:从基础到实践
数据结构·算法·leetcode
CoovallyAIHub18 分钟前
CostFilter-AD:用“匹配代价过滤”刷新工业质检异常检测新高度! (附论文和源码)
深度学习·算法·计算机视觉
幻奏岚音19 分钟前
《数据库系统概论》第一章 初识数据库
数据库·算法·oracle
你好,我叫C小白20 分钟前
贪心算法(最优装载问题)
算法·贪心算法·最优装载问题
CoovallyAIHub26 分钟前
CVPR 2025 | 频率动态卷积(FDConv):以固定参数预算实现频率域自适应,显著提升视觉任务性能
深度学习·算法·计算机视觉
mit6.82430 分钟前
[rStar] 解决方案节点 | `BaseNode` | `MCTSNode`
人工智能·python·算法
on_pluto_1 小时前
Leecode hot100 - 448. 找到所有数组中消失的数字
数据结构
zl_dfq1 小时前
数据结构 之 【布隆过滤器 的简介】
数据结构