题目链接
https://leetcode.cn/problems/minimum-amount-of-time-to-collect-garbage/
题目大意
M、P、G分别表示三种垃圾
garbage中的每一个元素表示一个垃圾站
每回收一个垃圾需要1分钟
不同的垃圾由不同的车去收
如果该垃圾站没有这种车要回收的垃圾,则可以直接开过
如果之后的垃圾站都没有这种车要回收的垃圾,则不用继续往前开
求:收拾完所有垃圾的总时间
解题思路
总时间 = 回收垃圾的总时间 + 不同垃圾车行驶所需的时间
其中,回收垃圾的总时间 = garbage数组中字符的数量,再计算不同垃圾车的行驶时间相加就行
代码
class Solution {
public int garbageCollection(String[] garbage, int[] travel) {
int sum = 0;
//回收垃圾需要的总时间
for (int i = 0; i < garbage.length; i++) {
sum += garbage[i].length();
}
int mTravel = 0;
int pTravel = 0;
int gTravel = 0;
int[] travelSum = new int[travel.length];
travelSum[0] = travel[0];
for (int i = 1; i < travel.length; i++) {
travelSum[i] = travel[i] + travelSum[i - 1];
}
//计算每辆垃圾车行驶的距离
for (int i = 1; i < garbage.length; i++) {
if (garbage[i].contains("M")) {
mTravel = travelSum[i - 1];
}
if (garbage[i].contains("P")) {
pTravel = travelSum[i - 1];
}
if (garbage[i].contains("G")) {
gTravel = travelSum[i - 1];
}
}
return sum + mTravel + pTravel + gTravel;
}
}