LeetCode: 217.存在重複的元素

給定一個整數數組,判斷是否存在重複元素。

如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。

示例 1:

輸入: [1,2,3,1]
輸出: true

示例 2:

輸入: [1,2,3,4]
輸出: false

看到題目,重複的元素,我立刻就想起了之前做過的LeetCode.136, 但這題還不太一樣。首先重複出現的次數是不定的,而且也不是隻能有一個數字是重複數字,其他很多數字都可以。

解析

我自己的辦法是,先排序,然後看相鄰元素是不是相等就ok了。排序時間複雜度是NlogN,遍歷比較是N。

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        if len(nums) <= 1:
            return False
        nums.sort()
        for i in range(1, len(nums)):
            if nums[i] == nums[i-1]:
                return True
        return False

看到題解,用到了set。哎呦,set在之前的題目中也有妙用,總是記不住。以後遇到什麼重複字眼的題目,就首先要想到set能不能用到。

使用set得到無重複的數字。然後判斷set之後的集合的長度,是否等於原數組長度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章