1

描述

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

实现

1.自己的方法,双循环,但是题目提示超过时间限制了

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        if len(nums)==0:
            return False
        else:
            for i in range(len(nums)):
                for j in range(len(nums)):

                    if nums[i]==nums[j] and i!=j:
                        return True
            return False

2.后面又想到一种方法,先排序,对比前后两个元素的值,如果存在相当就返回True。len(nums)-1因为取值i到倒数第二位就可以对比完,因为if 使用的是nums[i+1]

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        nums.sort()
        if len(nums) == (1 or 0):
            return False
        else:
            
                
            for i in range(len(nums)-1) :
                if nums[i] == nums[i+1]:
                    return True
            return False
   

3.楼下有大神回复了,看到一种比较简答的优秀解法:对数据去重,如果长度变化,说明存在重复元素。

class Solution:
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        return True if len(nums) != len(set(nums)) else False

4.楼下大神的字典解法:也很优秀,如果字典不存在数组的值,就dict[i] =i

class Solution(object):
    def containsDuplicate(self, nums):
        if len(nums) == 0:
                return False;
        else:
            dict = {}
            for i in nums:
               
                if dict.get(i) is not None:
                    return True
                else:
                    dict[i] = i
        return False

wawor4827
327 声望9 粉丝

姿势可以不猥琐,人一定要猥琐