题目
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array
python3
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
#二分查找解法
while len(nums)!=1:
medium=int((len(nums)-1)/2+1) #正中间的位置,不是下标
if medium%2==1:
medium-=1 #使得中间的数为偶数位
point=medium-1 #取偶数位的下标,该下标为奇数
if nums[point]==nums[point-1]:
nums=nums[point+1:] #偶数位与前一位相等则一定在右边
else:
nums=nums[:point] #否则一定在左边,注意单一元素一定不在偶数位
return nums[0]