leetcode-01 两数之和

解决方案一(时间复杂度O(n**2)):
1 class Solution(object):
2     def twoSum(self, nums, target):
3         for i in range(len(nums)):
4             if target - nums[i] in nums[i + 1: ]:
5                 return [i, nums[i + 1: ].index(target - nums[i]) + i + 1] 

解决方案二(时间复杂度O(n)):

1 class Solution(object):
2     def twoSum(self, nums, target):
3         dic = {}
4         for index, val in enumerate(nums):
5             if dic.get(target - val, -1) != -1:
6                 return [dic[target - val], index]
7             else:
8                 dic[val] = index

 

一、整体分析

    该题给出两个参数,分别为 numstarget,需要我们在 nums 中找到两个元素相加之和等于所给的 target 的目标值,并

  将这两个元素的索引通过列表的形式统一返回

二、具体分析

  方案一:

    1、首先遍历所给列表 nums,对于每一个遍历到的元素进行判断,判断 target 与该元素的差是否在 nums 列表中

    2、如果在 nums 列表中存在该差值,则以列表的形式返回遍历到的元素的索引以及该差值在列表中的索引

  方案二:

    1、遍历所给列表,将每次遍历到的元素作为键记录到字典中,并将值设为他们的索引

    2、每次遍历到一个新元素,先通过字典取值的方式判断 target 与该元素的差值是否在字典里面,如果在可直接返回答案,否则继续下一次循环。

posted @ 2019-07-29 14:54  Dream、Doom  阅读(218)  评论(0)    收藏  举报