算法----- 在排序数组中查找元素的第一个和最后一个位置
题目:
在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]
解决:
public static int[] searchRange(int[] nums, int target) {int[]result = new int[]{-1,-1};int right = nums.length - 1,left = 0,mid = 0;boolean hasFind = false;while (left <= right){mid = (int) (((long) left + right) /2);if (target == nums[mid]) {hasFind = true;break;}else if (target >= nums[mid]){left = mid + 1;}else {right = mid -1;}}if (hasFind) {int mLeft= mid, mRight = mid;int resultLeft = mid,resultRight = mid;for (int j ;left <= mLeft;){j = (int) ((((long) mLeft) + left) /2);if (nums[j] == target) {mLeft = j -1;resultLeft = j;}else {left = j + 1;}}for (int j;mRight <= right;){j = (int) ((((long) mRight) + right) /2);if (nums[j] == target) {mRight = j +1;resultRight = j;}else {right = j - 1;}}result[0] = resultLeft;result[1] = resultRight;}return result;}
算法----- 在排序数组中查找元素的第一个和最后一个位置相关推荐
- 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...
- [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...
- python 在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.如果数组中不存在目标值 target,返回 ...
- 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)
在排序数组中查找元素的第一个和最后一个位置 题目 思路与算法 代码实现 题目 思路与算法 题目要求了算法复杂度为O(logN),因此必须是二分查找来实现,但是其实最简单的思路应该就是顺序和逆序的遍历了 ...
- 力扣——在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置(两种方法记录) 法一(BP算法--使用双指针分别从前.后定位first index和last index),代码如下: class Solution ...
- 34. 在排序数组中查找元素的第一个和最后一个位置——二分法的魔鬼细节 小记
每次遇到二分法,一看就会,一写就废,在力扣上看到一篇很好的总结,因此做一下搬运工 参考题解--二分法各种情况及细节剖析,附送小诗一首 场景包括寻找一个数.寻找左侧边界.寻找右侧边界. 而且,我们就是要 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标
34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...
最新文章
- 踩坑了,JDK8中HashMap依然会产生死循环问题!
- Django通过URL传递参数的4种方法
- 数据结构和算法:全面的算法代码库
- PyMongo官方文档翻译——VNPY
- burp 代理的时候无法访问https网站
- mysql索引类型和区别是什么意思_mysql主键索引和普通索引之间的区别是什么
- 计算机错误英语,计算机启动提示:引导时解释英语错误消息的含义
- 数据挖掘导论——综合实验
- 我与学霸的距离计算机,你与学霸的距离,可能就差本笔记
- Google镜像网站全(4-3更)
- 哪几款车型?适合狮子座的车友?
- php检测硬件代码,查看“硬件设置”的源代码
- 怎么精细化管理客户关系?企业微信CRM系统可以做到吗
- 2022湖南最新中级消防员模拟考试试题及答案
- 【软件测试】数据库大厂面试真题解析(二叉树算法纯干货!)
- windows账户被停用,如何启动账户?
- 记win10下ubantu子系统运行shell脚本的坑
- 西安100w就可以财务自由?靠工资如何崛起!
- python判断数是整数还是小数
- 公司成立新单位,分公司和子公司哪个更好