34. 在排序数组中查找元素的第一个和最后一个位置
创始人
2024-03-18 08:34:50
0

🌈🌈😄😄

欢迎来到茶色岛独家岛屿,本期将为大家揭晓34. 在排序数组中查找元素的第一个和最后一个位置,做好准备了么,那么开始吧。

🌲🌲🐴🐴

一、题目名称

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

二、题目要求

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

三、相应举例

四、限制要求

0 <= nums.length <= 105

-109 <= nums[i] <= 109

nums 是一个非递减数组

-109 <= target <= 109

五、解决办法

六、代码实现

一、题目名称

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

二、题目要求

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

三、相应举例

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]


示例 2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]


示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

四、限制要求

  • 0 <= nums.length <= 105

  • -109 <= nums[i] <= 109

  • nums 是一个非递减数组

  • -109 <= target <= 109

五、解决办法

设计并实现时间复杂度为 O(log n) 的算法也就是指二分查找

六、代码实现

深度版:

class Solution {public int[] searchRange(int[] nums, int target) {int leftIdx = binarySearch(nums, target - 1);int rightIdx = binarySearch(nums, target) - 1;if (leftIdx <= rightIdx && nums[leftIdx] == target) {return new int[]{leftIdx, rightIdx};} return new int[]{-1, -1};}// 第一个大于 target 的数的下标public int binarySearch(int[] nums, int target) {int left = 0, right = nums.length - 1, ans = nums.length;while (left <= right) {int mid = (left + right) / 2;if (nums[mid] > target) {right = mid - 1;ans = mid;} else {left = mid + 1;}}return ans;}
}

 

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...