装满杯子需要的最短总时长 ^.^ 2022/08/25

https://leetcode.cn/problems/minimum-amount-of-time-to-fill-cups/

如果需要时长最短,当然要尽可能多的满足在同一时间段内,可以装两杯水。同时,有一个需要注意的问题,假设温水有100杯,热水加冷水一共20杯,那么这时候还需要计算么?不需要,因为没有可优化的空间了,所以直接返回100就好。可以大大降低程序耗时。所以就保留三个数字的最大值,然后消耗其他两个数字,直到其他两个数字之和小于最大值,直接返回消耗的次数+最大值即可。
上代码


class Solution {
    public int fillCups(int[] amount) {
        int max=amount[0];
        if(amount[1]>max){
            max=amount[1];
        }

        if(amount[2]>max){
            max=amount[2];
        }

        int sum=0;
        for (int i : amount) {
            sum=sum+i;
        }
        sum=sum-max;
        if(max>sum){
            return max;
        }
        int count=0;
        while(max<sum){
            sum=sum-2;
            count++;
        }
        return count+max;
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容