leetcode-217 | 存在重复元素

题目描述

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例:
输入: [1,2,3,1]
输出: true

示例:
输入: [1,2,3,4]
输出: false

示例:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

解答思路

转数据成不含重复元素的集合,如果长度不变,无重复元素;反之有重复元素。

翻译如下:

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        if len(set(nums))==len(nums):
            return False
        return True

结果:

执行用时 : 156 ms, 在Contains Duplicate的Python提交中击败了59.00% 的用户
内存消耗 : 17.2 MB, 在Contains Duplicate的Python提交中击败了21.95% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过156 ms17.2MBpython

优化解答

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        return not len(set(nums))==len(nums)

结果:

执行用时 : 152 ms, 在Contains Duplicate的Python提交中击败了95.73% 的用户
内存消耗 : 17.1 MB, 在Contains Duplicate的Python提交中击败了31.28% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过152 ms17.1MBpython

下面是一些尝试:

无限长度滑动窗口

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        #定义滑动窗口
        se = set()
        i, j = 0, -1
        while j+1 < len(nums):
            #是否在窗口中
            if nums[j+1] in se:
                return True
            #窗口后移
            se.add(nums[j+1])
            j+=1
        return False

结果:

执行用时 : 164 ms, 在Contains Duplicate的Python提交中击败了29.62% 的用户
内存消耗 : 17.2 MB, 在Contains Duplicate的Python提交中击败了27.70% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过164 ms17.2MBpython
## 使用集合判断个数 ``` python class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ se = set() for i in nums: if i not in se: se.add(i) else: return True return False ``` 结果: >执行用时 : 160 ms, 在Contains Duplicate的Python提交中击败了36.97% 的用户 内存消耗 : 17 MB, 在Contains Duplicate的Python提交中击败了34.77% 的用户
提交时间状态执行用时内存消耗语言
几秒前通过160 ms17MBpython

   Reprint policy


《leetcode-217 | 存在重复元素》 by 梦否 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
leetcode-220 | 存在重复元素 III leetcode-220 | 存在重复元素 III
题目描述给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例:输入: nums = [1,2,3,1],
2019-05-03
Next 
leetcode-219 | 存在重复元素 II leetcode-219 | 存在重复元素 II
题目描述给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。 示例:输入: nums = [1,2,3,1], k = 3输
2019-05-03
  TOC