尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

力扣34题 在排序数组中查找元素的第一个和最后一个位置
📅 发布时间:2026/6/20 0:28:59

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

三种情况:

情况一: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};
    }
};

相关新闻

  • ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽
  • 使用 systemd 管理 Python 项目(示例:confhub-sync)
  • 9.15模拟赛总结

最新新闻

  • Godot 4开源回合制RPG实战指南:构建专业级战斗与对话系统
  • 论文写作进阶:构建清晰一致的数学符号系统
  • MC9S12VR ATD模块高精度设计:从手册规范到电路实战
  • 2026全球化仓储软件(WMS)哪家好?行业选型参考 - 品牌排行榜
  • 告别臃肿:3个理由让你立即切换到GHelper控制华硕笔记本
  • 2026苏州擅长协议离婚谈判的律师推荐 - 品牌排行榜

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号