LeetCode刷题--存在重复元素

题目

存在重复元素:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

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

题目分析

此题有三种解法:

  1. 通过python的set数据结构将nums转化为集合,集合会自动去重,那么是否有重复元素,就取决于集合的长度和原来数组的长度是否相等了,不相等则表示有重复。
  2. 通过在遍历元素时使用hash表,将hash表中没有的元素放入hash表,下次再遍历到该元素,hash表已有该元素,则可判断重复。
  3. 将数组进行排序,如果有重复的元素,则这些元素必定相邻,所以判断排序后的相邻元素是否相等即可。

代码

集合法

def containsDuplicate(nums):
    return len(nums) != len(set(nums))
nums =  [1,1,2,2]
containsDuplicate(nums)

hash表法

def containsDuplicate(nums):
    d = {}
    for i in nums:
        if d.get(i):  
            return True
        d[i] = 1   
    return False
nums =  [1,2,3,4]
containsDuplicate(nums)

排序法

# 排序后,若有重复元素,则重复元素必定相邻
def containsDuplicate(nums):
    nums.sort()
    for i in range(len(nums)-1):
        if nums[i] == nums[i+1]:
            return True
    return False
nums =  [1,2,1,4]
containsDuplicate(nums)

测试

原文地址:https://www.cnblogs.com/sinlearn/p/13085899.html