-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathtwo-sum.py
More file actions
49 lines (32 loc) · 1.21 KB
/
two-sum.py
File metadata and controls
49 lines (32 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'''
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].
'''
class Solution:
def twoSum(self, nums: 'List[int]', target: 'int') -> 'List[int]':
# Approach one 低效
# dic = {}
# length = len(nums)
# for i in range(length):
# dic[nums[i]] = i
# for i in range(length): # 考虑一个target由两个相同的数字组成。例如[3,3] 6
# res = target - nums[i]
# if res in dic.keys() and dic.get(res) != i:
# return [i, dic.get(res)]
# Approach two
# dic = {}
# for i,n in enumerate(nums):
# m = target - n
# if n not in dic.keys():
# dic[m] = i
# else:
# return [dic.get(n),i]
# Approach three 细节优化
hashed = {}
for i,n in enumerate(nums):
if n in hashed: return [hashed[n],i]
hashed[target-n] = i