為了加強自己的程式能力,因此開始記錄每天刷leetcode的解法+說明,會用Ruby
、python
和JavaScript
三個語言來解題,今天是第十一天,讓我們開始吧!
題目來源:leetcode
Ruby
1 |
|
這次用到XOR
符號^
,這是種運算邏輯,用於對兩個二進制數的對應位進行比較,規則如下:兩個對應位數字不同,會回傳1
,兩個對應位不同則會回傳0
,用此來找出只出現一次的數字。
範例如下:
1 |
|
如果我們傳入[4, 1, 2, 1, 2]
呢?根據reduce(:^)
會這樣運算4 ^ 1 ^ 2 ^ 1 ^ 2
:
1 |
|
也可以用另外一個方法理解,1 ^ 1 = 0
, 2 ^ 2 = 0
, 0 ^ 4 = 4
只要有不同於其他的數,就會被留下來,這樣答案就出來了!
Python
1 |
|
Python也是一樣邏輯,只不過reduce
寫法不同,可以參考:reduce
JavaScript
1 |
|
JS也是一樣邏輯,只不過reduce
寫法不同,可以參考:reduce
评论