乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
這個題我本來打算用暴力來解決的,弄乙個dictionary,然後對每個數計數。
空間複雜度為o(1)
用異或,相同數字的異或為0,0與任何數異或 為任何數。
這樣所有數異或的結果,為那兩個只出現一次的數
然後根據這個異或結果,找出兩個數 二進位制位不同的一位(只要找一位就好)
根據這個二進位制位分組,為0的在一組,為1的在一組。這樣兩個數字肯定被分到了不同組。而每一組裡面的數字,只有乙個只出現一次的數,其餘數都出現兩次.....不用說了,分別異或
class solution:
if len(array)<2:
return false
num = array[0] ^ array[1]
for i in range(2,len(array)):
num ^= array[i]
# 找到二進位制位不同的一位,只需要找出來一位就行
i = 1
while num%2 == 0:
num = int(num//2)
i += 1
# 按照上面找到的二進位制位分組異或
num1 = 0
num2 = 0
for num in array:
if num%(2**i) == (2**(i-1)):
num1 ^= num
else:
num2 ^= num
return num1,num2
劍指offer 合併兩個排序的陣列
1 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。2 思路 運用遞迴 如果第乙個鍊錶為空,則直接返回第二個鍊錶 如果第二個鍊錶為空,則直接返回第乙個鍊錶 如果第乙個鍊錶中的值小於第二個鍊錶中的值,則將乙個鍊錶中的相應元素插入鍊錶 如果第乙個鍊錶...
劍指Offer 56 陣列中只出現一次的兩個數字
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。你可以假設這兩個數字一定存在。樣例輸入 1,2,3,3,4,4 輸出 1,2 class solution object def self,nums type nums list int rtype list...
劍指offer 陣列中只出現一次的兩個數字
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。中的類名 方法名 引數名已經指定,請勿修改,直接返回方法規定的值即可 param array int整型一維陣列 return int整型一維陣列 python 利用字典解決 class solution w...