[ LeetCode ] 540. Single Element in a Sorted Array

You are given a sorted array consisting of only integers where every element appears exactly twice, except for one element which appears exactly once. Find this single element that appears only once.

Example 1:
Input: [1,1,2,3,3,4,4,8,8]
Output: 2
Example 2:
Input: [3,3,7,7,10,11,11]
Output: 10
 Note: Your solution should run in O(log n) time and O(1) space.
class Solution(object):
    def singleNonDuplicate(self, nums):
        """        :type nums: List[int]        :rtype: int        """        if len(nums) == 1:
            return nums[0]

        start, end = 0, len(nums)
        while start < end:
            m = (start + end) / 2            n = m + 1 if (m % 2 == 0) else m - 1            if n >= len(nums):
                break            if nums[m] == nums[n]:
                start = m + 1            else:
                end = m

        return nums[start] if end != len(nums) else nums[end -1]

留言