【Leetcode解題】217. Contains Duplicate
題目
- 題目連結
- 目標函式 :
containsDuplicate(nums)- Input :
nums: List[int] - Output :
bool
- Input :
解題概念
- 題意 : 給定一整數陣列
nums,若任何 value 在nums中出現兩次以上則回傳true,否則回傳false
我的寫法
- 想法 : 宣告一個 list,並依序搜尋每個元素
- 若該元素在 list 中,則代表該元素重複兩次以上,則直接回傳
true - 若該元素不在 list 中,則代表該元素還未出現過,則把該元素加到 list 中
- 若整個跑完,代表沒有元素重複出現,則回傳
false
- 若該元素在 list 中,則代表該元素重複兩次以上,則直接回傳
- 程式碼 :
1
2
3
4
5
6
7
8
9
10
11def 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
3def 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%)
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


