題目

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

解題概念

  • 題意 : 給予一陣列 nums,如果其中有一元素出現兩次以上即回傳 true,否則回傳 false

我的寫法

  • 想法 :
    1. 先將 nums 小到大排序
    2. for 迴圈掃過一遍陣列,若一元素 = 其後面之元素,則代表該元素出現兩次以上,則回傳 true
    3. 若迴圈結束,代表無元素重複出現,則回傳 false
  • 程式碼 :
    1
    2
    3
    4
    5
    6
    arr = sorted(nums)
    print(arr)
    for i in range(0, len(arr)-1):
    if arr[i] == arr[i+1]:
    return True
    return False
  • 成效 :
    • Runtime: 822 ms (faster than 7.36%)
    • Memory Usage: 22.3 M (less than 96.40%)

解答 or 其他優秀寫法

  • 想法 :
    1. 建立一Set s
    2. for 迴圈掃過一遍陣列 :
      1. 若一元素已存在 s 中,代表此元素重複出現,則直接回傳 true
      2. 若沒有,則將該元素加入 s
    3. 若迴圈結束,代表無元素重複出現,則回傳 false
  • 程式碼 :
    1
    2
    3
    4
    5
    6
    s = set()
    for num in nums:
    if num in s:
    return True
    s.add(num)
    return False
  • 成效 :
    • Runtime: 552 ms (faster than 53.67%)
    • Memory Usage: 24 M (less than 21.63%)