1class Solution:2def singleNonDuplicate(self, nums: List[int]) -> int:3return self.b_search(nums)[0]45def b_search(self, nums):6if len(nums) == 1:7return nums8mid = len(nums) // 29a = nums[:mid]10b = nums[mid:]1112# check if last & first element of the two sub lists are same13if a[-1] == b[0]:14a = a[:-1]15b = b[1:]1617# ignore the sub list with even number of elements18if len(a) % 2:19return self.b_search(a)20else:21return self.b_search(b)