Loading

[二分法]有序数组中的单一元素

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]
posted @ 2024-10-15 11:06  Duancf  阅读(12)  评论(0)    收藏  举报