-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDC__1__.py
More file actions
99 lines (63 loc) · 2.25 KB
/
DC__1__.py
File metadata and controls
99 lines (63 loc) · 2.25 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"""
September 18, 2018
This problem was recently asked by Google.
Given a list of numbers and a number k, return whether any two numbers from the list add up to k.
For example, given [10, 15, 3, 7] and k of 17, return true since 10 + 7 is 17.
Bonus: Can you do this in one pass?
"""
def two_num_sum_k(X, k):
"""
Arguments:
X {array of integers} -- [integer numbers] [at least two: |X| >= 2]
k {integer} -- [number of steps to climb] [N >= 0]
"""
# Test for a valid input
if (X.__len__() <= 0):
return False
print("DEBUG: X =", X)
# store the allready encountered numbers when passing over X
cache_table = {}
for x in X:
# if I previously encountered the num. that summed with x gives k, I return True
if (str(k-x) in cache_table):
return True
else:
cache_table[str(x)] = True
return False
"""
========================================================================
=============================== TESTING ================================
========================================================================
"""
print("\n'''=====================<Test 1 - begin>===================='''")
k = 4
X = [2, 1, 0, 2, 1, 0, 3]
ris = two_num_sum_k(X, k)
print("\nk =", k)
print("X =", X, "\n")
print("two_num_sum_k = <", ris, "> \n")
print("'''=====================<Test 1 - end>======================'''\n")
print("\n'''=====================<Test 2 - begin>===================='''")
k = 4
X = [2, 1]
ris = two_num_sum_k(X, k)
print("\nk =", k)
print("X =", X, "\n")
print("two_num_sum_k = <", ris, "> \n")
print("'''=====================<Test 2 - end>======================'''\n")
print("\n'''=====================<Test 3 - begin>===================='''")
k = 4
X = []
ris = two_num_sum_k(X, k)
print("\nk =", k)
print("X =", X, "\n")
print("two_num_sum_k = <", ris, "> \n")
print("'''=====================<Test 3 - end>======================'''\n")
print("\n'''=====================<Test 4 - begin>===================='''")
k = 0
X = [0 ,0]
ris = two_num_sum_k(X, k)
print("\nk =", k)
print("X =", X, "\n")
print("two_num_sum_k = <", ris, "> \n")
print("'''=====================<Test 4 - end>======================'''\n")