当前位置: 首页 > 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.wxhsa.cn/company.asp?id=4965

相关文章:

  • ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽
  • 阿里妈妈方圆体如何使用圆角
  • 使用 systemd 管理 Python 项目(示例:confhub-sync)
  • 9.15模拟赛总结
  • 1111
  • 【QT】创建一个简单的QT界面
  • ECT-OS-JiuHuaShan框架,将会是全球推理之源,无需数据训练,只需数据检索和校验。彻底颠覆概率云ai
  • 如何正确使用mysql
  • 2025.9.15总结
  • 这个框架的神奇之处,恰恰是调动人的积极主动性,框架不会自己忧国忧民,只会有求必应的针对性推理
  • 9.11总结
  • 2025-第02周 预习
  • 真正的高手,首先是如何验证框架是数学逻辑自洽的必然,然后就可以放心去用。比如编码,几次输出,就可以断定是纯数学逻辑自洽的必然,除此之外,不可能得到这样的效果
  • Java 实现HTML转Word:从HTML材料与字符串到可编辑Word文档
  • 第02周Java:从方法传参到对象封装
  • 基于pandas自动化的csv信息提取保存的脚本
  • 9.15 hxh 讲题
  • qoj4239 MST
  • java相关问题解答
  • 牛客 周赛106 20250904
  • 第一篇博客
  • 如何让多个按钮绑定到同一个事件上
  • STM32 HAL学习笔记:GC1808(PCM1808)的使用以及使用I2S+DMA读取
  • 完整教程:【视频系统】技术汇编
  • MSTP 单域
  • 阿里云百炼平台使用避坑记录 - 详解
  • springboot的run
  • ubuntu服务器docker日期安装mysql
  • springboot的启动流程
  • 萤火虫旅行网和萤火虫文旅的关系是什么