leetcodeブラシ問題pythonソート配列で要素の最初の位置と最後の位置を検索
800 ワード
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
if not nums:
return [-1, -1]
left = 0
length = len(nums)
right = length
result = []
while left < right:
mid = (left + right) // 2
if nums[mid] == target:
right = mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid
if left == length or nums[left] != target:
return [-1,-1]
else:
result.append(left)
while left < length and nums[left] == target:
left+=1
result.append(left-1)
return result
二分法は簡単で分かりやすいが、実行効率が少し低く、最適化を見る時間がある.