当前位置: 首页 > news >正文

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

题型分类:数组中的二分查找

三种情况:

情况一:target在数组范围的右边或者左边,例如数组{3,4,5},target为2或者数组{3,4,5},target为6,此时应该返回{-1,-1}

情况二:target在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1,-1}

情况三:target在数组范围中,且数组中存在target,例如数组{3,6,7},target为6,此时应该返回{1,1}

class Solution {
public:
    int getRightBorder(vector<int>&nums,int target){
        int left = 0;
        int right = nums.size()-1;
        int rightBorder = -2;
        while(left<=right){
            int middle = left+(right-left)/2;
            if(nums[middle]>target){
                right = middle-1;
            }else{
                left = middle+1;
                rightBorder = left;
            }
        }
        return rightBorder;
    }
    int getLeftBorder(vector<int>&nums,int target){
        int left = 0;
        int right = nums.size()-1;
        int leftBorder = -2;
        while(left<=right){
            int middle = left+(right-left)/2;
            if(nums[middle]>=target){
                right = middle-1;
                leftBorder = right;
            }else{
                left = middle+1;
            }
        }
        return leftBorder;
    }
    vector<int> searchRange(vector<int>& nums, int target) {
        int leftBorder = getLeftBorder(nums,target);
        int rightBorder = getRightBorder(nums,target);
        if(leftBorder == -2 || rightBorder ==-2) return {-1,-1};
        if(rightBorder - leftBorder > 1) return {leftBorder+1,rightBorder-1};
        return {-1,-1};
    }
};
http://www.rkmt.cn/news/5462.html

相关文章:

  • ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽
  • 使用 systemd 管理 Python 项目(示例:confhub-sync)
  • 9.15模拟赛总结
  • ECT-OS-JiuHuaShan框架,将会是全球推理之源,无需数据训练,只需数据检索和校验。彻底颠覆概率云ai
  • 如何正确使用mysql
  • qoj4239 MST
  • 第一篇博客
  • springboot的启动流程
  • 「微积分 A1」基础知识(连载中)
  • 萤火虫文旅年票、为什么能做到低至4.2元一张景区门票、还能高达50%的毛利润?
  • SAP 采购订单税率及含税金额取数
  • Jenkins 容器和 Kubernetes Agent
  • LGP7916 [CSP-S 2021] 交通规划 学习笔记
  • 详细介绍:【Kubernetes】常见面试题汇总(十四)
  • 教育行业API安全最佳实践:全知科技以国家标准引领数据防护新范式
  • Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
  • 拾忆录
  • 从零搭建RAG应用:跳过LangChain,掌握文本分块、向量检索、指代消解等核心技术实现
  • python高阶技巧
  • CSS纯文本渐变动效
  • Redssion
  • 提升系统可靠性:Air8000多串口硬件设计的黄金法则
  • 20250915笔记
  • enumerate函数
  • HyperWorks许可激活
  • OpenStack Nova instance 常见操作
  • 线性规划
  • 伪代码学习总结
  • 麒麟
  • 多品牌摄像机视频平台EasyCVR海康大华宇视视频平台统一接入方案