本文主要是介绍LeetCode 每日一题 ---- 【2391.收集垃圾的最少总时间】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LeetCode 每日一题 ---- 【2391.收集垃圾的最少总时间】
- 2391.收集垃圾的最少总时间
- 方法:模拟(多次遍历)
2391.收集垃圾的最少总时间
方法:模拟(多次遍历)
需要注意的点是,处理一个单位的一个垃圾需要1分钟,比如“MMM”,处理垃圾需要3分钟,这是一个坑点,需要注意。
然后可以提前预处理假设全部单位需要处理全部垃圾,然后遍历的时候减去不需要处理的就可以了。
class Solution {public int garbageCollection(String[] garbage, int[] travel) {int ans = 0;for (String g : garbage) {ans += g.length();}for (int t : travel) {ans += t * 3; }for (char c : new char[]{'M', 'P', 'G'}) {for (int i = garbage.length - 1; i > 0 && garbage[i].indexOf(c) < 0; i -- ) {ans -= travel[i - 1];}}return ans;}
}
时间复杂度:
O(n + m)
n是garbage的长度,m是garbage[i]的长度之和
空间复杂度:
O(1)
这篇关于LeetCode 每日一题 ---- 【2391.收集垃圾的最少总时间】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!