LeetCode 217题 存在重复元素

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

思路:

对于python来说,直接比较原来长度len(nums)和set(nums)的长度,相同说明不存在相同元素,返回false 不相同说明存在相同元素(这里也只可能set的小于len)返回true

提交结果:

完整代码:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        return len(set(nums)) != len(nums)

其他思路:

  1. 排序:将数组排序 之后遍历比较每个数和其后面的数关系 相同就返回true 遍历完都不同就false

    class Solution:
        def containsDuplicate(self, nums: List[int]) -> bool:
            # 先对数组排序
            nums.sort()
            # 遍历数组,比较前后元素值
            for i in range(len(nums)-1):
                if nums[i] == nums[i+1]:
                    return True
            return False
    
    
  2. 哈希表:

    1. 遍历数组,将数组元素加入哈希表

    2. 如果元素存在哈希表中,则表示重复,返回true,否则遍历完的话没重复返回false

      class Solution:
          def containsDuplicate(self, nums: List[int]) -> bool:
              # 声明集合
              s = set()
              # 遍历数组,将元素添加到集合中
              for num in nums:
                  # 若元素存在于集合中,表示存在重复元素
                  if num in s:
                      return True
                  s.add(num)
              return False
      

https://leetcode-cn.com/problems/contains-duplicate/solution/217-cun-zai-zhong-fu-yuan-su-pai-xu-ha-x-kol5/

posted @ 2021-04-22 13:53  乖张❤  阅读(74)  评论(0)    收藏  举报