1. 程式人生 > >LeetCode.217. 存在重複元素

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

思路1:

使用Python自帶set函式將列表轉化成集合以去重,若此集合的長度相比原來不變,則說明沒有重複元素,反之則有。

程式碼1:

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

分析1:

時間複雜度O(n),空間複雜度O(0)

思路2:

匯入Python模組函式collections.Counter統計每個元素出現的個數。也可以不匯入模組直接建立字典統計。

程式碼2:

class Solution:
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        from collections import Counter
        nums_counter=Counter(nums)
        for i in nums_counter.values():
            if i>1:
                return True
        return False

分析2:

時間複雜度O(n),空間複雜度O(n)

思路3:

先對列表進行排序,之後檢查每個元素的後一個元素是否與當前元素相同。

程式碼3:

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

分析3:

時間複雜度O(nlogn),空間複雜度O(0)