[算法][数组][leetcode]2391. 收集垃圾的最少总时间

在这里插入图片描述

题目地址:

https://leetcode.cn/problems/minimum-amount-of-time-to-collect-garbage/description/



题解:

  class Solution {
    public int garbageCollection(String[] garbage, int[] travel) {
        int ans = 0;
       //先计算收所有的垃圾需要多少时间
       for(String s :garbage){
        ans+=s.length();
       }

       //假设每辆垃圾车都要跑完所有的房子则他们需要消耗的时间为
       for(int x : travel){
        ans+=x*3;
       }

       //去掉多加的时间,我们可以从后往前看 
       //比如 ["G","P","GP","GG"] 如果最后一个房子没有M和P则车子不需要到这里 再往前推也是一样
       //但是不管前面有没有 如果最后一个有 比如["G","P","GP","M"] 则车需要把所有房子都跑一遍
       //["G","P","M","M"]这种情况则收纸需要跑第一、二家 收玻璃的只需要跑第一家 收金属的需要跑所有家
        char [] arr = new char[]{'P','G','M'};
       for(char c : arr){
            for(int i=garbage.length-1;i>0&&garbage[i].indexOf(c)<0;i--){
                ans -=travel[i-1];
            }
       }

       return ans;
    }
}

在这里插入图片描述

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值