python3调试超时不通过求解答

刚考完一次笔试,用的python3,自测是满足题目要求,运行时间20+ms,内存2M,点调试一直超时通过不了,不知道为什么,求大神解答QAQ
题目:
输入两行
第一行 n
第二行 以空格分开的n个整数
输出:唯一一个出现次数为奇数次的数
例:
输入:
5
1 1 2 3 3
输出:
2
n = input()
nums = input().split()
nums = list(map(int, nums))
subs = set(nums)
for sub in subs:
    i = nums.count(sub)
    if i % 2 != 0:
        print(sub)
#笔试题目##Python##春招#
全部评论
count费时间而且打印数据之后没有退出循环,后台测试数据可能会很长的数组导致超时
点赞 回复
分享
发布于 2019-03-30 21:19
一没题目,二没限制,你要程序员看啥
点赞 回复
分享
发布于 2019-03-30 21:16
联易融
校招火热招聘中
官网直投
列表的count方法很费时间的,是个O(n)的复杂度,你这样相当于是n方的复杂度
点赞 回复
分享
发布于 2019-03-30 21:20
count函数调用太多次了
点赞 回复
分享
发布于 2019-03-30 21:16
这题用异或操作的
点赞 回复
分享
发布于 2019-03-30 21:42
最省空间的是异或操作,常规的方法是哈希
点赞 回复
分享
发布于 2019-03-30 22:14
常规的哈希都会超时,这题只能异或
点赞 回复
分享
发布于 2019-03-30 22:23
python解法如下: n = input()nums = input().split()res=int(nums[0])for i in range(1,len(nums)): res=res^int(nums[i])print(res)
点赞 回复
分享
发布于 2019-03-31 11:16

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务