2018年2月15日 星期四

[136] Single Number

有一個array裡面的每個數字都出現兩次, 只有一個只出現一次,
找出那個只出現一次的數字,
而且時間複雜度要求是linear , 並且不要使用額外的memory
想半天, 想說不能多用memory, 又要線性時間內解決,
以為通通加起來, 加一半再減一半應該會剩下那個單獨的數字,
結果不是XD
遇到有負數的就始亡 XD
先全部變成正數也不行, 因為可能會把單獨的負數也變正了,
那答案也不會對.
看了討論原來要用XOR !!!
瞬間覺得沒意思= =
不喜歡這種考bit operation的小tricky
就是前面抱怨過的code會完全看不懂啊啊啊
知道這種小tricky了不起啊~(捏碎滑鼠)
(不好意思, 人家就是比妳了不起啊哈哈哈哈哈奔入雨中)

Single Number
int singleNumber(int* nums, int numsSize) {
    int i,ret=0;
    for (i=0;i<numsSize;i++)
        ret ^= nums[i];
    return ret;
}

沒有留言:

張貼留言