1561. 你可以获得的最大硬币数目
难度中等14收藏分享切换为英文接收动态反馈
有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:
- 每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。
- Alice 将会取走硬币数量最多的那一堆。
- 你将会取走硬币数量第二多的那一堆。
- Bob 将会取走最后一堆。
- 重复这个过程,直到没有更多硬币。
给你一个整数数组 piles
,其中 piles[i]
是第 i
堆中硬币的数目。
返回你可以获得的最大硬币数目。
示例 1:
1 | 输入:piles = [2,4,1,2,7,8] |
示例 2:
1 | 输入:piles = [2,4,5] |
示例 3:
1 | 输入:piles = [9,8,7,6,5,1,2,3,4] |
提示:
3 <= piles.length <= 10^5
piles.length % 3 == 0
1 <= piles[i] <= 10^4
贪心算法
- 排序
- 每次$Alice$取最大,我取第二大,$Bob$取最小,直至$n/3$次
1 | class Solution { |