• 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)
    

    测试

  • 相关阅读:
    python-多任务-进程
    注解_Annotation
    ZIP压缩输入/输出流
    什么是API,这篇文章让你豁然开朗
    异常处理(在控制台输入数据)
    控件监听与面板监听
    多态与继承
    Java——socketser与cli
    20170307
    20180305
  • 原文地址:https://www.cnblogs.com/sinlearn/p/13085899.html
Copyright © 2020-2023  润新知