标签:tco 最大 存在 次数 解决 下标 elf 整数 数组
Difficulty: 中等
给定一个按照升序排列的整数数组 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 <= 10<sup>5</sup>
-10<sup>9</sup> <= nums[i] <= 10<sup>9</sup>
nums
是一个非递减数组-10<sup>9</sup> <= target <= 10<sup>9</sup>
解法一:很容易想到的思路,比较简单,遍历一次数组找到所有等于target的元素的下标索引然后找到对应最大最小的索引。需要注意的是数组所有的元素都相等的特殊情况。
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
if not nums:
return [-1,-1]
res = []
for i, v in enumerate(nums):
if v == target:
res.append(i)
if not res:
return [-1,-1]
elif len(res) == 1:
return [res[0],res[0]]
else:
return [min(res), max(res)]
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
标签:tco 最大 存在 次数 解决 下标 elf 整数 数组
原文地址:https://www.cnblogs.com/swordspoet/p/14381248.html