这道 Python 题目有大神会做吗?

2019-05-09 23:09:22 +08:00
 kayseen
面试的时候遇到的,搞不懂,题目如下:

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字,使用 python 实现
5405 次点击
所在节点    Python
47 条回复
wolegequ
2019-05-09 23:11:14 +08:00
跟 py 无关,位运算
meik2333
2019-05-09 23:12:20 +08:00
lv2016
2019-05-09 23:14:04 +08:00
建立一个列表,从第一个数开始搜索,如果在列表里则删除,不在则加入,最后剩的数就是只出现一次的
lv2016
2019-05-09 23:17:27 +08:00
@lv2016 发现自己菜的真实。。。
megachweng
2019-05-09 23:18:49 +08:00
counter?
icreeper
2019-05-09 23:23:18 +08:00
数组里所有数取异或,这题在 leetcode 有
megachweng
2019-05-09 23:26:45 +08:00
```
from collections import Counter

l = [1, 1, 2, 3, 4, 5, 5, 4]
c = Counter(l)
print(c.most_common()[-1][0])

>>> 3
```
xabc
2019-05-09 23:37:39 +08:00
数据放入集合,完成 😄

集合元素具有唯一性
mashpolo
2019-05-09 23:43:45 +08:00
二进制的异或最快
justfortest
2019-05-10 00:29:21 +08:00
遍历异或运算就行
CEBBCAT
2019-05-10 00:44:23 +08:00
不仅菜,还不会搜索…… 上升空间有限啊,加油吧
azh7138m
2019-05-10 01:25:08 +08:00
这不是菜,是蔡
inhzus
2019-05-10 01:46:07 +08:00
reduce(lambda x, y: x ^ y, array)
dangyuluo
2019-05-10 02:00:06 +08:00
pythonic 的办法是用 set 和 diff
huntzhan
2019-05-10 02:01:41 +08:00
蔡得口交
Nimrod
2019-05-10 02:41:24 +08:00
这种题就是你做一次以后都会做了
20015jjw
2019-05-10 02:58:05 +08:00
xor
luclee1996
2019-05-10 06:03:13 +08:00
luozic
2019-05-10 07:26:53 +08:00
python 可以用异或或者位运算,空间复杂度是 O(1 ),不过时间复杂度 O(n)。
jmc891205
2019-05-10 07:45:32 +08:00
改下题目:
一组数据中只有一个数字出现了一次。其他所有数字都是出现了多次的。 请找出这个数字。

还有什么讨巧的方法吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/562683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX