Find number which appears odd times

給定一個 n 個數的數組,找出指出一次的數字

馬上想到暴力法是一個一個搜索,這樣的時間複雜度是 O(n^2),顯然不行

稍微好一點的方法是用 Hashmap,key 是每個數字,Value 是 count,這樣可以 O(n) 時間內完成

但是用 hashmap會耗費額外的 O(n/2) 空間

還有沒有更好的方法?

有的,可以用 XOR, XOR有個特性是自己跟自己 XOR的結果是「否」,

也就是把全部的數字XOR起來就會是那個只出現一次的數字,這樣的時間複雜度是 O(n),沒有額外的空間消耗

results matching ""

    No results matching ""