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