学习目标:
每日一题:540. 有序数组中的单一元素
学习内容:
如果不相等,那么说明分割点在该点左边,导致了错位;如果相等,说明分割点在该点右边,还没有错位。
也就是如果nums[mid] == nums[mid^1],我们要left = mid + 1;否则我们要right = mid
Python3.10中使用key 指定带有单个参数的 key function,用于从每个输入元素中提取比较键。 默认值为 None (直接比较元素)。
学习结果:
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
# bisect_right和bisect_left等价写法
return nums[bisect_right(range(len(nums) - 1), False, key=lambda x: nums[x] != nums[x ^ 1])]