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