如果是一个偶数^1,那么答案是偶数+1;
如果是一个奇数^1,那么答案是奇数-1。
1^1=0
2^1=3
3^1=2
4^1=5
5^1=4
-1^1=-2
-2^1=-1
-3^1=-4
-4^1=-3
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例 1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: [3,3,7,7,10,11,11]
输出: 10
注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
l, r = 0, len(nums)-1
while l<r:
mid = (l+r)//2
#mid分为奇数和偶数
#长度为奇数情况[1,1,2,3,3,4,4,5,5],mid=4,4^1=5
#如果mid前面没有缺失,那么nums[4]==nums[5],否则缺失
if nums[mid] == nums[mid^1]:
l = mid + 1
else:
r = mid
return nums[l]