作者ponwar87123 (干我屁事喔北七)
看板Python
标题[问题] leetcode上看到的问题和解法不是很懂..
时间Sat Aug 25 12:56:10 2018
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://webptt.com/cn.aspx?n=bbs/Python/M.1535172973.A.57A.html
1F:→ os653: 那函式套到 example1 做的计算是 (2 xor 2) xor 1 故输出 1 08/25 13:16
2F:→ mikapauli: 是说用int.__xor__不就好了 08/25 13:35
3F:→ s860134: 简单来说因为自己 xor 自己会等於 0 所以我只要 08/25 18:36
4F:→ s860134: 从第一个 xor 到最後一个就会剩下题目中唯一没有成双的 08/25 18:36
5F:→ s860134: 数字,他的单行解就是在做我上面三句 08/25 18:37
6F:推 jlhc: 跟函数无关 就是做xor而已... 08/25 20:19
7F:→ oToToT: xor特性,0^a=a而且a^a=0所以全部xor再一起就会是答案 08/25 20:23
8F:推 alan23273850: smart problem! 08/25 21:44
9F:推 Kyosuke: XOR = 不进位加法 08/26 22:28