217.存在重复元素

1.题目

  • 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

输入:nums = [1,2,3,4]
输出:false

法一、暴力法

  • 超时了(无奈)
class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        for i in range(len(nums)):
            for j in range(i):
                if nums[i] == nums[j]:
                    return True
                j+=1
            i+=1
        return False

法二、先排序后比较

  • 鉴于法一的两个for循环时间超了,想到先排序,排好序只用一次for循环比较前后两个元素是否相同即可。
class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        nums = sorted(nums)
        for i in range (len(nums)-1):#注意范围
            if nums[i] == nums[i+1]:
                return True
            i+=1    
        return False

法三、利用set去重特性

  • 思路:set去重,再判断二者是否长度是否一致
class Solution(object):
    def containsDuplicate(self, nums):
        if len(set(nums)) != len(nums):
            return True
        else:
            return False
posted @ 2023-10-19 16:34  Frommoon  阅读(1)  评论(0编辑  收藏  举报