题目地址:
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;
}
}