題目

  • 題目連結
  • 目標函式 : containsDuplicate(nums)
    • Input : nums: List[int]
    • Output : bool

解題概念

  • 題意 : 給定一整數陣列 nums,若任何 value 在 nums 中出現兩次以上則回傳 true,否則回傳 false

我的寫法

  • 想法 : 宣告一個 list,並依序搜尋每個元素
    • 若該元素在 list 中,則代表該元素重複兩次以上,則直接回傳 true
    • 若該元素不在 list 中,則代表該元素還未出現過,則把該元素加到 list 中
    • 若整個跑完,代表沒有元素重複出現,則回傳 false
  • 程式碼 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def containsDuplicate(self, nums):

    t_list = list()

    for num in nums:
    if num in t_list:
    return True
    else:
    t_list.append(num)

    return False
  • 成效 :
    • Time Complexity : $O(n)$
    • Runtime: Time Limit Exceeded

解答 or 其他優秀寫法

  • 想法 : 直接運用 set 的特性,判斷轉成 set 的前後長度是否相同,去判斷 nums 內是否有重複元素
  • 程式碼 :
    1
    2
    3
    def containsDuplicate(self, nums):

    return not (len(nums) == len(set(nums)))
  • 成效 :
    • Time Complexity : $O(n)$
    • Runtime: 408 ms (faster than 99.53%)
    • Memory Usage: 29.1 MB (more than 35.82%)