Skip to content

Commit 98584db

Browse files
author
Gonzalo Diaz
committed
[Hacker Rank] Interview Preparation Kit: Dictionaries and Hashmaps: Frequency Queries. Clean Code: no magic numbers.
1 parent 2360fd1 commit 98584db

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency_queries.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33

44
from typing import Dict
55

6+
__INITIAL__ = 0
7+
8+
__INSERT__ = 1
9+
__DELETE__ = 2
10+
__SELECT__ = 3
11+
12+
__NOT_FOUND__ = 0
13+
__FOUND__ = 1
14+
615

716
def freq_query(queries):
817
result = []
@@ -11,18 +20,19 @@ def freq_query(queries):
1120
for query in queries:
1221
operation = query[0]
1322
data = query[1]
23+
current = data_map.get(data, __INITIAL__)
1424

15-
if operation == 1: # insert
16-
data_map[data] = data_map.get(data, 0) + 1
17-
elif operation == 2 and data_map.get(data, 0) > 0: # delete
18-
data_map[data] -= 1
19-
elif operation == 3: # "select"
25+
if operation == __INSERT__:
26+
data_map[data] = current + 1
27+
elif operation == __DELETE__:
28+
data_map[data] = max(current - 1, 0)
29+
elif operation == __SELECT__:
2030
for value in data_map.values():
2131
if value == data:
22-
result.append(1)
32+
result.append(__FOUND__)
2333
break
2434
else:
25-
result.append(0)
35+
result.append(__NOT_FOUND__)
2636
else:
2737
raise ValueError('Invalid operation')
2838

0 commit comments

Comments
 (0)