【发布时间】:2018-03-13 18:15:44
【问题描述】:
Problem 217: Contains Duplicate
问题描述:
给定一个整数数组,查找该数组是否包含任何重复项。 如果任何值至少出现两次,您的函数应该返回 true 在数组中,如果每个元素都是不同的,它应该返回 false。
我在 Python 中的解决方案:
class Solution:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
from functools import reduce
if len(nums) < 2:
return False
else:
return bool(reduce(lambda x, y: not (bool(nums.count(x) == 1) and bool(nums.count(y) == 1)), nums))
我认为在nums 中对x 的每个判断nums.count(x) == 1 之间使用and 运算可以得出问题想要的答案的倒数,但似乎无法使其工作。
谁能告诉我为什么错了?例如,当输入为[1, 2, 3] 时,我得到的输出为True 而不是False。
我的想法一开始是完全错误的,还是我在某个地方错误地执行了可行的实施?
任何帮助将不胜感激。提前谢谢你。
【问题讨论】:
-
return len(set(nums)) != len(nums)应该这样做 - 比你的要容易得多。 -
是的,我在网上找到了一个更简单的,但仍然想知道如何让我的工作...... :(
标签: python-3.x