题目链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
难度:中等
描述:
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
提示:
数组长度:[0, 100000]
题解
思路:
分别找到target的左边界和右边界就行
class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:return [self.get_left_border(nums, target), self.get_right_border(nums, target)]def get_left_border(self, nums, target):left, right = 0, len(nums) - 1while left < right:mid = (left + right) // 2if nums[mid] > target:right = mid - 1elif nums[mid] < target:left = mid + 1else:right = midif right < 0:return -1else:return right if nums[right] == target else -1def get_right_border(self, nums, target):left, right = 0, len(nums) - 1while left < right:mid = (left + right + 1) // 2if nums[mid] < target:left = mid + 1elif nums[mid] > target:right = mid - 1else:left = midif left >= len(nums):return -1else:return left if nums[left] == target else -1
