zoukankan      html  css  js  c++  java
  • Leetcode 217 存在重复

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

    如果任何值在数组中出现至少两次,函数返回 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

    方法一:

    将nums排序,通过set转换为集合后再转换为列表并排序,前者和后者相等,则无重复元素

    def containsDuplicate( nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        nums.sort()
        print(nums)
        if nums==[]:
            return False
        s = list(set(nums))
        s.sort()
        # 排序后再作比较
        print(s)
        if s == nums:
            return False
        else:
            return True

    改进:

    只需将转换后的集合和原列表长度相比较即可,若长度相等则没有重复元素

    def containsDuplicate2( nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        if len(set(nums))==len(nums):
            return False
        else:
            return True

    方法三:

    利用python collections库中的Counter计数实现

    import collections
    def containsDuplicate3(nums):
        dic=collections.Counter(nums)
        # collections的Counter类可实现对每个元素的计数功能,返回的是字典,key是元素,value是其出现的次数
        # Counter({5: 2, 1: 1, -2: 1, -4: 1, 0: 1})
        print(dic)
        for value in dic.values():
            if value>=2:
                return True
        return False

    注:

    Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。


     
     
  • 相关阅读:
    informix 外部表 pipe
    关于XML的一些解析操作
    oracle 导出导入数据库
    判断请求访问的浏览器类型设备
    git与SVN的区别
    Java获取文件路径
    <DIV>内容显示隐藏功能实现
    文件下载
    文件上传
    记录启动Nginx启动失败
  • 原文地址:https://www.cnblogs.com/Aprilnn/p/9531696.html
Copyright © 2011-2022 走看看