34.在排序数组中查找元素的第一个和最后一个位置--leetcode算法题解(带注释)
public int[] searchRange(int[] nums, int target) {//先决条件排除一部分if(target < nums[0] || target > nums[nums.length - 1]){return new int[]{-1,-1};}//初始化左右边界int l = 0;int r = nums.length - 1;//初始化数组int[] arr = {-1,-1};int mid = 0;//代表左边界是否有被找到boolean canBeFound = false;//找arr[0] 也就是左边界while(l <= r){//二分法求左边界mid = l + (r - l) / 2;if(target == nums[mid]){//告诉下面我找到了左边界canBeFound = true;r = mid - 1;//赋值arr[0] = mid;//如果r经过减一之后小于0,说明到达原数组边界if(r < 0){break;}//如果这个数的左边那个数比自己小,说明找到了边界if(nums[r] < nums[mid]){break;}}//正常操作if(target < nums[mid]){r = mid - 1;}if(target > nums[mid]){l = mid + 1;}}if(!canBeFound){//找不到左边界return arr;}//reset l and rl = mid;r = nums.length - 1;//找右边界,和上面对称即可while(l <= r){mid = l + (r - l) / 2;if(target == nums[mid]){l = mid + 1;arr[1] = mid;if(l >= nums.length){break;}if(nums[l] > nums[mid]){break;}}if(target < nums[mid]){r = mid - 1;}if(target > nums[mid]){l = mid + 1;}}return arr;}
其实还有一种方法是一个while里把左右边界都找出来,这个初次写可能会比较乱,我也还没搞懂,就这样先了,好歹也是手撸出来的,上面的算法。。
34.在排序数组中查找元素的第一个和最后一个位置--leetcode算法题解(带注释)相关推荐
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置 golang
34. 在排序数组中查找元素的第一个和最后一个位置 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-i ...
- 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...
- [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置(两种方法记录) 法一(BP算法--使用双指针分别从前.后定位first index和last index),代码如下: class Solution ...
- 34. 在排序数组中查找元素的第一个和最后一个位置——二分法的魔鬼细节 小记
每次遇到二分法,一看就会,一写就废,在力扣上看到一篇很好的总结,因此做一下搬运工 参考题解--二分法各种情况及细节剖析,附送小诗一首 场景包括寻找一个数.寻找左侧边界.寻找右侧边界. 而且,我们就是要 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标
34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...
- leetcode(34)在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置 class Solution {public int[] searchRange(int[] nums, int target) {int len = nu ...
- 62. Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 (二分查找-局部有序)
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.如果数组中不存在目标值 target,返回 [-1, -1].进阶:你可以设计并实现时 ...
最新文章
- RobotFramework教程使用笔记——requests和requestslibrary库
- Java程序员月薪20k的涨薪秘籍:培训班java找不到工作
- 观《phonegap第三季 angularjs+ionic视频教程 实时发布》学习笔记(一)
- 从零开始入门 K8s | Kubernetes 网络模型进阶
- 在Linux下通过Wake On LAN实现网络唤醒远程开机
- php实现服务器文件同步,PHPstorm配置同步服务器文件
- 操作argc, argv的经典写法
- adodb.connection id password windows用户_Windows 12发布了?一款号称可以取代win10的山寨Windows系统...
- 一道题目,检验一千个瓶子中哪个有毒
- Ansys Speos | 助力汽车按键开关设计与优化
- SqlServer 备份数据库语句
- 贝叶斯分析好坏_交易必读|浅谈贝叶斯分析
- 虚拟计算机 win7,Win7电脑安装虚拟机的方法?
- 2019-4-29-win10-uwp-使用-Border-布局
- weex scroller滚动列表实践
- 2020 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 完整题面和题解
- python substr_Python字符串的方法
- 将数据从前台传到后台方法总结
- RV1126笔记一:环境搭建及SDK编译
- 【论文】行车安全智能管理系统在地方铁路的应用
热门文章
- 牛客挑战赛47 C 条件(Floyd bitset优化)
- Rabbits UVALive - 8211
- [数论]线性筛——约数个数与约数和
- [学习笔记] 如果你愿意学那么你是可以看的懂的 —— 群论与 burnside 引理和 polya 定理
- 树的同构模板题(法1.最小表示法+法2.树哈希)
- 无限序列 (ybtoj C.3)
- P6855-「EZEC-4.5」走方格【dp】
- 51nod-猴猴的比赛【莫队,线段树】
- GDOI2018-《被虐记》
- 2021牛客暑期多校训练营3 G-Yu Ling(Ling YueZheng) and Colorful Tree(cdq分治)