方法一、暴力解法 -- 5s
復雜度分析:時間復雜度:O(n^2)空間復雜度:O(1)
length = len(nums)
for i in range(length):
for j in range(i + 1, length):
if nums[i] + nums[j] == target:
return [i, j]
for i in range(length):
for j in range(i + 1, length):
if nums[i] + nums[j] == target:
return [i, j]
方法二:利用python切片 - 1s
復雜度分析:時間復雜度:O(n)空間復雜度:O(1)
解題關鍵主要是想找到 num2 = target - num1,是否也在list中,其實原理跟2次遍歷一樣
for i in range(len(nums)):
if target-nums[i] in nums[i+1:]:
return [i, nums.index(target-nums[i], i+1)]
if target-nums[i] in nums[i+1:]:
return [i, nums.index(target-nums[i], i+1)]
方法三:哈希 -- 80ms
復雜度分析:時間復雜度:O(n)空間復雜度:O(n)
直接哈希記錄需要的key,遍歷到就是找到需要的值:
dic = {}
for i, num in enumerate(nums):
if num in dic:
return [dic[num], i]
else:
dic[target - num] = i
for i, num in enumerate(nums):
if num in dic:
return [dic[num], i]
else:
dic[target - num] = i
作者:aver58
鏈接:https://leetcode-cn.com/problems/two-sum/solution/1liang-shu-zhi-he-by-aver58/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
鏈接:https://leetcode-cn.com/problems/two-sum/solution/1liang-shu-zhi-he-by-aver58/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。