-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmaximum-number-of-coins-you-can-get.py
61 lines (59 loc) · 1.53 KB
/
maximum-number-of-coins-you-can-get.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
# There are 3n piles of coins of varying size, you and your friends will take piles of coins as follows:
#
#
# In each step, you will choose any 3 piles of coins (not necessarily consecutive).
# Of your choice, Alice will pick the pile with the maximum number of coins.
# You will pick the next pile with the maximum number of coins.
# Your friend Bob will pick the last pile.
# Repeat until there are no more piles of coins.
#
#
# Given an array of integers piles where piles[i] is the number of coins in the ith pile.
#
# Return the maximum number of coins that you can have.
#
#
# Example 1:
#
#
# Input: piles = [2,4,1,2,7,8]
# Output: 9
# Explanation: Choose the triplet (2, 7, 8), Alice Pick the pile with 8 coins, you the pile with 7 coins and Bob the last one.
# Choose the triplet (1, 2, 4), Alice Pick the pile with 4 coins, you the pile with 2 coins and Bob the last one.
# The maximum number of coins which you can have are: 7 + 2 = 9.
# On the other hand if we choose this arrangement (1, 2, 8), (2, 4, 7) you only get 2 + 4 = 6 coins which is not optimal.
#
#
# Example 2:
#
#
# Input: piles = [2,4,5]
# Output: 4
#
#
# Example 3:
#
#
# Input: piles = [9,8,7,6,5,1,2,3,4]
# Output: 18
#
#
#
# Constraints:
#
#
# 3 <= piles.length <= 105
# piles.length % 3 == 0
# 1 <= piles[i] <= 104
#
#
class Solution:
def maxCoins(self, piles: List[int]) -> int:
piles.sort(reverse=True)
res = 0
d = deque(piles)
while d:
d.popleft()
d.pop()
res += d.popleft()
return res