找到數組中惟一不重複的元素

題目

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
相關文章
相關標籤/搜索