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

二分法は簡単で分かりやすいが、実行効率が少し低く、最適化を見る時間がある.