題目:給一個非空整數(shù)數(shù)組,除了某個元素只出現(xiàn)一次以外,其余每個元素均出現(xiàn)兩次。找出那個只出現(xiàn)一次的元素。要用線性時間復(fù)雜度解決,不占用額外空間。
示例:輸入[2,2,1]輸出1;輸入[4,1,2,1,2]輸出4
基礎(chǔ)知識:異或運(yùn)算符。例如2^1的異或運(yùn)算要先轉(zhuǎn)換成二進(jìn)制,根據(jù)相同為0不同為1得出010^001=011=3
答案代碼
深入思考:為什么異或能夠解決這道題?源于題目的限制:其余元素僅僅出現(xiàn)兩次。這個兩次可以拓展成偶數(shù)次。我們把該題異或運(yùn)算過程展示一下。以輸入[4,1,2,1,2]為例

異或運(yùn)算具體展示圖
為什么調(diào)換數(shù)組中的1、2、1、2也是4呢?加入我們單獨(dú)看異或運(yùn)算具體展示圖的第個位、或者第十位、或者第百位、或者第千位(也就是挑其中一列豎著看),經(jīng)過偶數(shù)個1或者0,其結(jié)果保持仍原狀。如下圖。

偶數(shù)個1、0異或運(yùn)算是0,0再和只有1個二進(jìn)制0100運(yùn)算仍是0100,所以最后輸出的結(jié)果是0100