136. Single Number
food for thought
這題沒有想出來,原始想法很複雜,都是因為沒有bit operation的觀念
這題運用了XOR的特性,wiki頁面中提到的:
交換律:
結合律:
恆等律:
歸零律:
自反:
最佳解答中及善用了上述的特性,將所有元素XOR起來,就會回傳出落單的那個元素:
int singleNumber(int A[], int n) {
int result = 0;
for (int i = 0; i<n; i++)
{
result ^=A[i];
}
return result;
}
現在題目的描述是每個元素出現兩次,僅有一個元素出現一次。
但似乎原本的題目沒有敘述清楚,原先的敘述似乎是只有一個元素沒有重複出現,這樣的描述會讓重複出現的元素可以是奇數個存在,這樣上述的做法就沒有用了,因為:
A^A^A = A