數組中除一個數出現一次外,其餘均出現兩次。找出該單一數字。要求線性時間、常數空間。
x ^ x = 0x ^ 0 = x因此,所有數異或後,成對數抵消為 0,剩下的即為單一數字。
int singleNumber(int* nums, int numsSize) {
int res = 0;
for (int i=0; i
嘗試用計數數組統計頻次,但無法處理負數索引,且空間非 O(1)。異或法完美解決。


Single Number 是異或運算經典應用。核心口訣:「成對抵消,孤獨留存」。擴展:若其餘數出現 3 次,需用有限狀態機(兩個變量模擬三進制計數器)。掌握異或性質,位運算題迎刃而解。