LeetCode/34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:
你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?
示例 1:
1 | 输入:nums = [5,7,7,8,8,10], target = 8 |
示例 2:
1 | 输入:nums = [5,7,7,8,8,10], target = 6 |
示例3:
1 | 输入:nums = [], target = 0 |
提示:
- 0 <= nums.length <= 105
- -109 <= nums[i] <= 109
- nums 是一个非递减数组
- -109 <= target <= 109
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题一看到排序数组四个大字,我啪的一下就站起来了,很快啊,直接二分查找,套用模板,这里唯一需要注意的一个细节就是,target有可能在nums数组中重复,只需要在找到目标值后,向前向后搜索,把所有满足要求的结果都找到。这里与剑指 Offer 53 - I. 在排序数组中查找数字 I不同的是返回满足条件的区间,而不是满足条件的数值个数。
具体代码如下:
1 | class Solution { |

