LeetCode0540.SingleElementinaSortedArrayOrderedArray【中】【Python】【两点】问题LeetCode给你一个仅由整数组成的排序数组,其中每个元素恰好出现两次,除了一个只出现一次的元素。找到这个只出现一次的单个元素。例一:输入:[1,1,2,3,3,4,4,8,8]输出:2例二:输入:[3,3,7,7,10,11,11]输出:10注:您的解决方案应该在O(logn)时间和O(1)空间内运行。题目给定一个只包含整数的有序数组,每个元素会出现两次,只有一个数只会出现一次,求这个数。示例1:输入:[1,1,2,3,3,4,4,8,8]输出:2示例2:输入:[3,3,7,7,10,11,11]输出:10注意:您的方案应该以O(logn)时间复杂度和O(1)空间复杂度运行。思路解决1:二分查找每次取偶数位置的数,如果不在偶数位置,则mid-1。如果nums[mid]!=nums[mid+1],表示单个数在mid的左边,否则在mid的右边。时间复杂度:O(logn)空间复杂度:O(1)解法二:判断相邻元素是否相等。每两个位置遍历数组。如果nums[i]!=nums[i+1],那么单个数就是nums[i],否则就是最后一个数。时间复杂度:O(n/2)空间复杂度:O(1)Python代码classSolution(object):defsingleNonDuplicate(self,nums):""":typenums:List[int]:rtype:int"""#解决方案一:二分查找low,high=0,len(nums)-1whilelow
