1.题目
2.我的解决方案
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
ls = []
for i in range(len(nums)):
k = target - nums[i]
if k in nums:
j = nums.index(k)
if i != j:
ls.append(i)
ls.append(j)
break
return ls
3.官方解决方案
1)暴力破解法
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
for i in range(n):
for j in range(i + 1, n):
if nums[i] + nums[j] == target:
return [i, j]
return []
分析:利用了二重循环,时间复杂度为 O ( n 2 ) O(n^2) O(n2)
2)哈希表法
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict()
for i, num in enumerate(nums):
if target - num in hashtable:
return [hashtable[target - num], i]
hashtable[nums[i]] = i
return []
分析:类似于我的方法,但是此方法更加清晰,时间复杂度为 O ( n ) O(n) O(n)