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] = index13 14 15 #EG: target = 7 16 # list = [1,2,3,4,5,]17 18 #如果a能成功,b不在字典里,但是列表里的确有b ,不要慌,这时把a放到字典里,减法有对称性,扫描到b的时候必然能成功找到 a 在字典里,返回两个下标