34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置

class Solution:
    def searchRange(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """           
        if len(nums) == 0:
            return [-1,-1]
        elif target < nums[0] or target > nums[-1]:
            return [-1,-1]
        else:
            m, n = 0, len(nums) - 1
            while m <= n:
                mid = (m + n) // 2
                if target > nums[mid]:
                    m = mid + 1
                elif target < nums[mid]:
                    n = mid - 1
                elif target == nums[mid]:
                    m = n = mid
                    while m-1 >= 0 and nums[m-1] == target:
                        m -= 1
                    while n+1 <= len(nums)-1 and nums[n+1] == target:
                        n += 1
                    return [m,n]
            return [-1,-1]