【Leetcode解題】217. Contains Duplicate
題目
- 題目連結
- 目標函式 :
containsDuplicate(nums)- Input :
nums: List[int] - Output :
bool
- Input :
解題概念
- 題意 : 給予一陣列
nums,如果其中有一元素出現兩次以上即回傳true,否則回傳false
我的寫法
- 想法 :
- 先將
nums小到大排序 - 用
for迴圈掃過一遍陣列,若一元素 = 其後面之元素,則代表該元素出現兩次以上,則回傳true - 若迴圈結束,代表無元素重複出現,則回傳
false
- 先將
- 程式碼 :
1
2
3
4
5
6arr = 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 其他優秀寫法
- 想法 :
- 建立一Set
s - 用
for迴圈掃過一遍陣列 :- 若一元素已存在
s中,代表此元素重複出現,則直接回傳true - 若沒有,則將該元素加入
s中
- 若一元素已存在
- 若迴圈結束,代表無元素重複出現,則回傳
false
- 建立一Set
- 程式碼 :
1
2
3
4
5
6s = 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%)
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


