[LeetCode] 1. Two Sum 两数之和

2019年5月25日   开始了我的刷题之路,此笔记记录刷题流程

[LeetCode] 1. Two Sum 两数之和

 
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,

return [0, 1]
 
 
思路:遍历一次,遍历过程中建立字典,和减法,除法都有对称性,如果在列表中找到了目标1,根据 sum = a + b  那么后面必然还会找到一个目标2 , 
 
Python 代码:
 1 class Solution:
 2     def twoSum(self, nums: List[int], target: int) -> List[int]:
 3         if nums == []:
 4             return None
 5         seen = {}
 6         
 7         for index,value in enumerate(nums):
 8             x = target - value
 9             if x in seen:
10                 return [seen[x],index]
11             else:
12                 seen[value] = index
13 
14 
15 #EG: target = 7 
16 #      list = [1,2,3,4,5,]
17 
18 #如果a能成功,b不在字典里,但是列表里的确有b ,不要慌,这时把a放到字典里,减法有对称性,扫描到b的时候必然能成功找到 a 在字典里,返回两个下标

 

 

posted @ 2019-05-25 16:16  Poceer  阅读(84)  评论(0编辑  收藏  举报