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

计算机低能儿从0刷leetcode | 34.在排序数组中查找元素的第一个和最后一个位置 | 二分法

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

思路:这道题感觉比33题要简单很多,思路也很顺畅,主要分为两部分。

1、寻找左端点。我们还是使用二分查找,依然是比mid小去左侧,比mid大去右侧。区别是当target == nums[mid]的时候,如果mid-1存在,我们判断nums[mid-1]是否也等于target,如果是就向左查找,因为左端点一定在左侧,否则向右查找。

2、从确定好的左端点位置向右遍历数组,直到找到右端点。

代码:

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int len = nums.size();int l=0,r=len-1;int left=-1,right=-1;if(len==0) return {-1,-1};//左端点while(l<=r){int mid = (l+r)/2;if(target<nums[mid]) r=mid-1;else if(target>nums[mid])  l=mid+1;else if(target==nums[mid]){if(mid>0&&nums[mid-1]==nums[mid])r=mid-1;else {left=mid;break;}}}//右端点right=left;while(right<len-1&&nums[right+1]==target)right++;vector<int> res={left,right};return res;}
};


http://www.mrgr.cn/news/63278.html

相关文章:

  • 自由软件与开源软件:异同与联系
  • 水生生物图像分割系统:创新方法解析
  • StringBuilder为何比String节省效率
  • LeetCode Hot 100:贪心算法
  • B站狂神说+mybatis+如何创建一个最简单的mybatis程序
  • Redis 命令集 (超级详细)
  • .net 在线客服系统,到底能不能处理 50万 级消息量,系统架构实践
  • HTTP返回码和其含义
  • Vue中ref、reactive、toRef、toRefs的区别
  • 超萌!HTMLCSS:超萌卡通熊猫头
  • 卷积、卷积操作、卷积神经网络原理探索
  • SpringMVC课时1
  • 简单的ELK部署学习
  • 排序——万亿数量级
  • linux基本指令之文件操作
  • 域控操作二十四:主域故障辅域接替
  • 安装Docker环境的两种方式
  • Vue3+TypeScript+Vite 后台管理项目
  • 走进智慧工地
  • 【Python】网络请求与数据获取:Requests库的使用与技巧
  • React.js教程:从JSX到Redux的全面解析
  • Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)
  • 洪水风险评估——洪水制图
  • 三色激光投影仪推荐:一篇文章盘点三色激光投影仪的优劣处
  • 基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现
  • 沈阳乐晟睿浩科技有限公司抖音小店短视频时代的电商蓝海