-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
37 lines (28 loc) · 1.29 KB
/
solution.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
# Enough is enough!
# Alice and Bob were on a holiday.
# Both of them took many pictures of the places they've been, and now they want to show Charlie their entire collection.
# However, Charlie doesn't like this sessions, since the motive usually repeats.
# He isn't fond of seeing the Eiffel tower 40 times.
# He tells them that he will only sit during the session if they show the same motive at most N times.
# Luckily, Alice and Bob are able to encode the motive as a number.
# Can you help them to remove numbers such that their list contains each number only up to N times,
# without changing the order?
# Task
# Given a list lst and a number N,
# create a new list that contains each number of lst at most N times without reordering.
# For example if N = 2, and the input is [1,2,3,1,2,1,2,3],
# you take [1,2,3,1,2], drop the next [1,2] since this would lead to 1 and 2 being in the result 3 times,
# and then take 3, which leads to [1,2,3,1,2,3].
# Example
# delete_nth([1, 1, 1, 1], 2) # return [1,1]
# delete_nth([20, 37, 20, 21], 1) # return [20,37,21]
def delete_nth(order, max_e):
if not order or max_e < 1:
return []
counts = {i: 0 for i in order}
r = []
for i in order:
if counts[i] < max_e:
counts[i] += 1
r.append(i)
return r