540. Single Element in a Sorted Array

Question

CleanShot 2024-09-04 at 15.42.44@2x.png

Code

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

        if n == 1:
            return nums[0]

        l, r = 0, n - 1

        while l <= r:
            m = l + (r - l) // 2

            if m - 1 >= 0 and nums[m] == nums[m - 1]:
                if (m - 0 + 1) % 2 == 0:
                    l = m + 1
                else:
                    r = m - 1
            elif m + 1 < n and nums[m] == nums[m + 1]:
                if (n - m ) % 2 == 0:
                    r = m - 1
                else:
                    l = m + 1
            else:
                return nums[m]