LeetCode刷题之34.在排序数组中查找元素的第一个和最后一个位置
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
给定一个按照升序排列的整数数组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]
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
a,b = -1,-1
for i in range(len(nums)):
if nums[i] == target and a == -1:
a,b = i,i
if nums[i] == target:
b = i
return[a,b]
- 算法说明:
初始化起始位置和结束位置为[-1,-1];然后遍历nums中的元素,遍历到第一个target的时候,判断起始位置是否是-1,如果是,将索引赋值给起始位置a,为了防止nums中只存在一个target的情况,将结束位置的值也赋值为当前位置,然后继续循环;遍历到第二个target的时候,第一个if的条件不成立,即起始位置的值不再变化,用第二个if更新结束位置的值,最后返回[a,b]即可。