Given a list of numbers, where every number shows up twice except for one number, find that one number.數組
Example:
Input: [4, 3, 2, 4, 1, 3, 2]
Output: 1this
Challenge: Find a way to do this using O(1) memory.code
要實現 O(1) 空間複雜度,能學到的一個簡單辦法是就地將數組排個序。而後2個2個的迭代,判斷相鄰2個元素是否相等,不相等則找到了惟一元素。
時間複雜度上升到了至少 O(nlogn). (但若是用計數排序的話,也許能夠作到 O(n), 可是這樣一來空間複雜度又不知足了)。排序
def singleNumber(nums): nums.sort() for i in range(0, len(nums) - 1, 2): if nums[i + 1] != nums[i]: return nums[i] print singleNumber([4, 3, 2, 4, 1, 3, 2]) # 1