1578. Minimum Time to Make Rope Colorful
Alice有一个绑满各种颜色气球的绳子,因为他想要绳子的颜色看起来更多彩,所以
两个相同颜色的气球不能放在一起要移除,若移除每个气球要耗费不同时间求出让
绳子是多彩要耗费的最小时间。
思路:
1.贪婪算法,对相同颜色的气球序列的最大成本进行贪婪(尽可能不拿成本最高的
气球),每次成本都累加较小的气球成本
2.pre用来判断上一个走访的气球之颜色
3.remain保留较大的气球成本(剩下的),利用一个布林first来判断remain的初始值
并把remain和当前的比
Java Code:
class Solution {
public int minCost(String colors, int[] neededTime) {
int cost = 0, n = neededTime.length, remain = 0;
boolean first = true;
char pre = colors.charAt(0);
for(int i = 1; i < n; i++) {
// 如果连续两个气球颜色一样
if(pre == colors.charAt(i)) {
// 依照是否是第一次比决定要和哪个比
if(first) {
cost += Math.min(neededTime[i - 1], neededTime[i]);
remain = Math.max(neededTime[i - 1], neededTime[i]);
} else {
cost += Math.min(remain, neededTime[i]);
remain = Math.max(remain, neededTime[i]);
}
first = false;
}
else {
first = true;
}
pre = colors.charAt(i);
}
return cost;
}
}
感觉写的很丑 我渍鲨