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

【力扣hot100题】(064)在排序数组中查找元素的第一个和最后一个位置

调试了半天终于过了……

神人题目,主要是情况太太太多了,有先找到左边界的情况、先找到右边界的情况、找到中间节点之后要依次找左右边界的情况……其实要是弄多一点循环应该就不会像我写的这么复杂,但我太懒了就是不想多开循环。

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int left=0;
        int right=nums.size()-1;
        vector<int> result{-1,-1};
        int recordl=left;
        int recordr=right;
        while(left<=right){
            int mid=(left+right+1)/2;
            if(nums[mid]>target) right=mid-1;
            else if(nums[mid]<target) left=mid+1;
            else{
                if(mid+1==nums.size()||nums[mid+1]!=target){result[1]=mid;right=mid-1;}
                if(mid==0||nums[mid-1]!=target){result[0]=mid;left=mid+1;}
                if(result[1]!=-1&&result[0]!=-1) return result;
                else if(result[0]!=-1&&recordl!=0){
                    left=recordl;
                    right=recordr;
                    recordl=0;
                }
                else if(result[0]==-1&&recordl==0){
                    recordl=mid+1;
                    recordr=right;
                    right=mid-1;
                }
                else if(result[0]==-1) right=mid-1;
                else left=mid+1;
            }
        }
        return result;
    }
};

相关文章:

  • 【Tauri2】015——前端的事件、方法和invoke函数
  • Docker常用操作教程
  • java发送http请求
  • 数字化转型:重构生存逻辑,不止系统升级
  • AI面试实践手册|牛客网
  • Flutter 打包APK的几种方式
  • 架构思维: 全链路日志深度解析
  • 【LeetCode】在每个树行中找最大值(DFS 深度优先搜索)
  • QT6 C++视频播放器实现(基于QGraphicsVideo)
  • 数据结构----------顺序查找,折半查找和分块查找(java实现)
  • 解决conda命令报错CondaSSLError(mac也适用)
  • 机器视觉3D中激光偏镜的优点
  • 基于α-β剪枝的含禁手AI五子棋
  • MySQL的存储引擎有哪些,它们之间有什么区别?
  • Github 2025-04-06 php开源项目日报 Top10
  • nginx创建成功但是进不去页面
  • ArcGIS Pro新增功能:在3D场景中增加天气系统,晴天、阴天、雨天、下雪、有雾
  • 202520 | 微服务
  • 代码仓库使用git lfs上传模型文件
  • sentinel新手入门安装和限流,热点的使用
  • 网站建设的编程技术/站内关键词排名优化软件
  • 招聘网站开发设计/网站百度手机端排名怎么查询
  • 重庆政府网站建设单位/机器人编程培训机构排名
  • 阜新网站推广/网站优化软件费用
  • pcb高端网站建设/湖南竞价优化专业公司
  • 建立网站例题/seo销售好做吗