【教3妹学算法-每日3题(2)】装满杯子需要的最短总时长

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

3妹

3妹:2哥2哥,出大事了,你有没有听说,安倍晋三被刺杀身亡了。
2哥:嗯, 我也看到新闻了。
3妹:哎, 政治上的事,世事难料啊。
2哥:是的,这种事情我们也只能作为新闻听一听,也不是我们小平民可以关心的。
3妹:我还是好好学习,天天向上吧。 继续美好的一天,先从做题开始。

讲课

题目:

现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。

给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水、温水和热水的杯子数量。返回装满所有杯子所需的 最少 秒数。

示例 1:

输入:amount = [1,4,2]
输出:4
解释:下面给出一种方案:
第 1 秒:装满一杯冷水和一杯温水。
第 2 秒:装满一杯温水和一杯热水。
第 3 秒:装满一杯温水和一杯热水。
第 4 秒:装满一杯温水。
可以证明最少需要 4 秒才能装满所有杯子。
示例 2:

输入:amount = [5,4,4]
输出:7
解释:下面给出一种方案:
第 1 秒:装满一杯冷水和一杯热水。
第 2 秒:装满一杯冷水和一杯温水。
第 3 秒:装满一杯冷水和一杯温水。
第 4 秒:装满一杯温水和一杯热水。
第 5 秒:装满一杯冷水和一杯热水。
第 6 秒:装满一杯冷水和一杯温水。
第 7 秒:装满一杯热水。
示例 3:

输入:amount = [5,0,0]
输出:5
解释:每秒装满一杯冷水。

提示:

amount.length == 3
0 <= amount[i] <= 100

思路:

排序,每一秒都装满最多类型的两个杯子。

java代码:

class Solution {
    public int fillCups(int[] amount) {
        int count  = 0;
        while (amount[0]>0 || amount[1]>0 || amount[2]>0) {
            Arrays.sort(amount);
            amount[1]--;
            amount[2]--;
            count++;
        }
        
        return count;
    }
}

你可能感兴趣的:(【教3妹学算法-每日3题(2)】装满杯子需要的最短总时长)