程序地带

01.15 力扣题目(你可以获得的最大硬币数目)


题目

有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:


每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。 Alice 将会取走硬币数量最多的那一堆。 你将会取走硬币数量第二多的那一堆。 Bob 将会取走最后一堆。 重复这个过程,直到没有更多硬币。 给你一个整数数组 piles ,其中 piles[i] 是第 i 堆中硬币的数目。 返回你可以获得的最大硬币数目。


思路

因为bob取的最小的,所以直接可以把bob丢开不要,用sort方法排序,直接去掉最小的来算,因为我们自己取的是中间的那几个数,所以算到最大的三个下标为止结束。


问题

开始没想到这题跟Bob根本没关系,因为Bob拿的是最小的,所以计算的时候可以直接把他抛开,去掉最小的。 数组的排序方法可以用Java自带的Arrays.sort方法来进行从大到小来排序


代码
public class MaxCoins {
public static void main(String[] args) {
int[] piles = {2, 4, 1, 2, 7, 8};
int i = maxCoins(piles);
System.out.println(i);
}
public static int maxCoins(int[] piles) {
Arrays.sort(piles);
int sum = 0;
int index = piles.length - 2;
for (int i = 0; i < piles.length / 3; i++) {
sum += piles[index];
index = index - 2;
}
return sum;
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43178741/article/details/112689185

随机推荐

JavaWeb方向-面试汇总

JVM1.垃圾回收算法标记-清除:标记已死对象,GC时直接清除。CMS回收器使用。  特点:简单、速度快,但会留有内存空间碎片,空...

一个忧国忧民的程序员 阅读(666)

装ubuntu16.04与win10双系统

1.需要的软件其中第一个软件,用于这种情况:把boot引导分区选择为win10系统,就需要使用HEUEFI进行手动添加引导项,以下教程没有用到这...

ljy123321ljy 阅读(367)

python分割合并文件

python分割合并文件python分割文件将notebook.txt文件分割放到yyy文件夹中:python合并文件将yyy文件夹中的文件合并到以日期开头的日志文件中:运...

lijil168 阅读(366)

python内置小工具

python内置小工具

本文首发地址:https://www.dawnsite.cn/archives/181.html1.字符串转换为JSON由于JSON的诸多优点,已被广泛应用于各个系统中&#...

Dawn_SSR 阅读(785)

Unity3d场景快速烘焙

很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景...

ivanmrt 阅读(492)

【运维心得】这些存储方式你都知道吗?

最近看到一篇文章,对常用的存储方式进行了对比分析,原文写的不错,但是感觉还是不够简单,大道至简,下面按照自己的理解,...

算法模式 阅读(988)