【Leetcode解題】1. Two Sum
題目
- 題目連結
- 目標函式 :
twoSum(nums, target)- Input :
nums: List[int]、target: int - Output :
List[int]
- Input :
解題概念
- 題意 : 給予一充滿各種不同數字的陣列
nums與一數target,需找出nums中兩個數字nums[i]與nums[j],兩者相加起來需等於target,最後回傳 index list:[i, j]。 nums裡無重複之數字- 要回傳之 index list 中的元素順序可為任意順序
我的寫法
- 想法 :
- 使用Hashmap
tmap去儲存閱覽過的元素- 儲存格式 : Key: 元素、Value: index(
{nums[i] : i})
- 儲存格式 : Key: 元素、Value: index(
- 使用 for 迴圈去閱覽
nums- 若
target - nums[i]已儲存在tmap中 : 則回傳兩個元素的index - 若否 : 則將
{nums[i] : i}加入tmap中
- 若
- 使用Hashmap
- 程式碼 :
1
2
3
4
5
6
7
8
9def twoSum(self, nums, target):
tmap = dict()
for i in range(len(nums)):
if target - nums[i] in tmap:
return [tmap[target - nums[i]], i]
else:
tmap[nums[i]] = i - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
- Runtime: 43 ms (faster than 83.21%)
- Memory Usage: 14.3 MB (more than 23.15%)
解答 or 其他優秀寫法
- 皆與我的算法類似,時間複雜度也都是 $\color{DB4D6D}{O(n)}$
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


