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

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


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

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};}
};

相关文章:

  • Android Test2 获取系统android id
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_天气预报日历示例(CalendarView01_18)
  • WordZero:让Markdown与Word文档自由转换的Golang利器
  • 装备制造项目管理具备什么特征?如何选择适配的项目管理软件系统进行项目管控?
  • 【SSM】SpringBoot笔记2:整合Junit、MyBatis
  • 【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理
  • 2025前端微服务 - 无界 的实战应用
  • 深入浅出 Scrapy:打造高效、强大的 Python 网络爬虫
  • 初探Service服务发现机制
  • QT使用WxSQLite3打开加密数据库并查询
  • Django CMS 的 Demo
  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • 更新版【飞云翻倍系统】新增支撑压力多线参考技术,操盘技术图文解说
  • 4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
  • Struts2漏洞由浅入深
  • AIGC图像去噪:核心原理、算法实现与深度学习模型详解
  • Rocketmq消息队列 消息模型 详解
  • [论文阅读] 人工智能+软件工程 | MemFL:给大模型装上“项目记忆”,让软件故障定位又快又准
  • 在 Ubuntu 24.04 LTS 上安装 Jenkins 并配置全局工具(Git、JDK、Maven)
  • 探秘半导体制造设备钢结构防震基座的承重奥秘-江苏泊苏系统集成有限公司
  • 毕业设计网站做几个/江苏网络推广公司
  • 怎么推广公司网站/淘宝关键词工具
  • 国外做地铁设计的公司网站/网络营销专业是干嘛的
  • 潍坊高端网站建设/百度seo价格查询系统
  • 陕西江川建设有限公司公司网站/百度收录工具
  • 扬州做网站的科技公司/百度信息流优化