题目描述[原题链接][https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/]
给定一个按照升序排列的整数数组 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]
题解
该题明确要求复杂度为O(log n)级别,最容易想到的就是二分法,而且给我们的还是升序排列的数组,符合二分的要求,(QAQ)要求找出目标值在数组中的起始位置。
我的解题思路是这样的,先找到左端的目标值,再从右端找到目标值,两个目标值都找到了,将他们加到向量中,返回向量即可,没有目标值返回{-1,-1}
;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |