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和负数)。


 
 
posted @ 2018-08-24 19:19  Aprilnn  阅读(202)  评论(0编辑  收藏  举报