Skip to content

Latest commit

 

History

History
28 lines (25 loc) · 829 Bytes

34.md

File metadata and controls

28 lines (25 loc) · 829 Bytes

题目地址

https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/

解答

def searchRange(nums, target):
    """
        在排序数组中查找元素的第一个和最后一个位置

        二分查找值,找到值后,用两个指针去找索引

    """
    i, j = 0, len(nums) - 1
    while nums and i <= j:
        in_middle = (i + j) // 2
        if nums[in_middle] == target:
            k, p = in_middle - 1, in_middle + 1
            while 0 <= k and nums[k] == nums[in_middle]:
                k -= 1
            while p <= len(nums) - 1 and nums[p] == nums[in_middle]:
                p += 1
            return [k + 1, p - 1]
        elif nums[in_middle] < target:
            i = in_middle + 1
        else:
            j = in_middle - 1
    return [-1, -1]