-
Notifications
You must be signed in to change notification settings - Fork 0
/
1_two_sum.py
73 lines (61 loc) · 1.71 KB
/
1_two_sum.py
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""
---
title: Two sum
number: 1
difficulty: easy
tags: ['Array','Hash Table']
solved: true
---
"""
'''
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
'''
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
return self.best(nums,target)
def best(self,nums,target):
hashmap = {}
for index,value in enumerate(nums):
res = target-value
if res in hashmap:
return [index,hashmap[res]]
hashmap[value] = index
return [-1,-1]
def hash_map(self,nums,target):
# 85ms
hashmap = {}
# Create hashmap
for i in range(len(nums)):
hashmap[nums[i]] = i
for i in range(len(nums)):
res = target - nums[i]
if res in hashmap:
if i != hashmap[res]:
return [i,hashmap[res]]
print("sta sad")
def brute_force(self,nums,target):
# Lets try with simple
# 6583 ms
sum = 0
for i in range(len(nums)):
for j in range(i+1,len(nums)):
sum = nums[i]+nums[j]
if sum == target:
return [i,j]
sum = 0
if __name__ == '__main__':
nums = [2,7,11,15]
target = 9
# [0,1]
print(Solution().twoSum(nums, target))
nums = [3,2,4]
target = 6
# [1,2]
print(Solution().twoSum(nums,target))