两数之和算法思想很简单,即找到nums[i]和nums[j]==target-(nums[i])返回[I, j ]即可。问题在于,简单的两层遍历循环时间复杂度为O(),而通过构建一个hash表就可将时间复杂度降至O(n)。本文给出两种方法的代码实现。
示例:
图1 两数之和输入输出示例图
方法一:枚举(时间复杂度为为O())
代码 :
class Solution:def twoSum(self, nums, target):for i in range(len(nums)):for j in range(i + 1, len(nums)):if nums[i] + nums[j] == target:return [i, j]return []
方法二:哈希表(时间复杂度为O(n))
代码:
class Solution:def twoSum(self, nums, target):hashmap = {}for i, num in enumerate(nums):if target - nums[i] in hashmap:return [i, hashmap[target - nums[i]]]hashmap[num] = ireturn []