[ 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]
留言
張貼留言