[二分法]有序数组中的单一元素
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]