[Python手撕]有序数组中的单一元素

THINK TWICE, CODE ONCE. / 2024-10-17 / 原文

class Solution:
    def singleNonDuplicate(self, nums: List[int]) -> int:

        left = 0
        right = len(nums)-1
        res = -1
        while left <= right:
            mid = (left+right)//2

            if mid %2 == 0 and nums[mid] != nums[mid-1]:
                res = mid
                left = mid + 1  
            elif mid %2 == 1 and nums[mid] == nums[mid-1]:
                left = mid + 1
            elif mid %2 == 0 and nums[mid] == nums[mid-1]:
                right = mid - 1
            elif mid %2 == 1 and nums[mid] != nums[mid-1]:
                right = mid -1

        
        return nums[res]