当前位置: 首页 > 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};}
};
http://www.lqws.cn/news/162919.html

相关文章:

  • 【高等数学】函数项级数
  • C获取unix操作系统的信息
  • python版若依框架开发:前端开发规范
  • spring4第7-8课-AOP的5种通知类型+切点定义详解+执行顺序
  • 3D Web轻量化引擎HOOPS Communicator三大可视化应用场景,解析浏览器支持功能!
  • 指针的使用——基本数据类型、数组、结构体
  • opencv-python的使用——from official tutorial(持续更新)
  • Git Svn
  • 今日学习:工程问题(场景题)
  • 数据库三范式设计---小白初学+案例引入
  • 一键切换不同状态,3D数字孪生场景搭建更便捷!
  • Amazing晶焱科技:电子系统产品在多次静电放电测试后的退化案例
  • React 第五十四节 Router中useRevalidator的使用详解及案例分析
  • [大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
  • MySQL——视图 用户管理 语言访问
  • 应用app的服务器如何增加高并发
  • Linux 里 su 和 sudo 命令这两个有什么不一样?
  • 【快速预览经典深度学习模型:CNN、RNN、LSTM、Transformer、ViT全解析!】
  • 每日算法刷题Day23 6.5:leetcode二分答案3道题,用时1h40min(有点慢)
  • CICD实战(一) -----Jenkins的下载与安装
  • HarmonyOS:如何在启动框架中初始化HMRouter
  • 【Redis】笔记|第10节|京东HotKey实现多级缓存架构
  • Sentinel微服务保护
  • Day45
  • 2025年ESWA SCI1区TOP,元组引导差分进化算法TLDE+黑箱优化,深度解析+性能实测
  • 如何使用 Redis 快速实现布隆过滤器?
  • 亲测解决The scripts pylupdate5.exe, pyrcc5.exe and pyuic5.exe which is not on PATH
  • 代码训练LeetCode(23)随机访问元素
  • 从零发布一个 Vue 3 Button 组件到 npm(基于 Vite)
  • Dify源码教程:账户和密码传递分析