[問題] leetcode上看到的問題和解法不是很懂..

看板Python作者 (干我屁事喔北七)時間6年前 (2018/08/25 12:56), 編輯推噓3(306)
留言9則, 7人參與, 6年前最新討論串1/1
Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? Example 1: Input: [2,2,1] Output: 1 Example 2: Input: [4,1,2,1,2] Output: 4 這網站似乎會規定幾秒內跑完,所以在討論區可以看到各種大師的解法 最讓我不解的是,有人一行可以跑完這題.. 解法是這樣 class Solution(object): def singleNumber(self, nums): return reduce(lambda x, y: x^y,nums) 真的不懂啊啊啊 即使看過每一個函數關鍵字的作法(reduce,lambda,^) 都還是不懂... 有高手可以解釋嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.135.202 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1535172973.A.57A.html

08/25 13:16, 6年前 , 1F
那函式套到 example1 做的計算是 (2 xor 2) xor 1 故輸出 1
08/25 13:16, 1F

08/25 13:35, 6年前 , 2F
是說用int.__xor__不就好了
08/25 13:35, 2F

08/25 18:36, 6年前 , 3F
簡單來說因為自己 xor 自己會等於 0 所以我只要
08/25 18:36, 3F

08/25 18:36, 6年前 , 4F
從第一個 xor 到最後一個就會剩下題目中唯一沒有成雙的
08/25 18:36, 4F

08/25 18:37, 6年前 , 5F
數字,他的單行解就是在做我上面三句
08/25 18:37, 5F

08/25 20:19, 6年前 , 6F
跟函數無關 就是做xor而已...
08/25 20:19, 6F

08/25 20:23, 6年前 , 7F
xor特性,0^a=a而且a^a=0所以全部xor再一起就會是答案
08/25 20:23, 7F

08/25 21:44, 6年前 , 8F
smart problem!
08/25 21:44, 8F

08/26 22:28, 6年前 , 9F
XOR = 不進位加法
08/26 22:28, 9F
文章代碼(AID): #1RWE5jLw (Python)
文章代碼(AID): #1RWE5jLw (Python)