贪心day3
135. 分发糖果
class Solution {
public int candy(int[] ratings) {
int len = ratings.length;
if (len == 0) return 0;
//分配数组
int[] alot = new int[len];
//先从前到后 保证结点与左相邻孩子保持正确逻辑关系
alot[0] = 1;
for (int i = 1; i < len; i++) {
if (ratings[i] > ratings[i - 1]) {
alot[i] = alot[i - 1] + 1;
} else {
alot[i] = 1;
}
}
//从后往前 保证结点与右结点保持正确逻辑关系
for (int i = len - 2; i >= 0; i--) {
if (ratings[i] > ratings[i + 1]) {
//处理权重比右边大的情况 此时的alot[i]可能是由alot[i-1] + 1 得来(权重比左边大),需取alot[i]和alot[i+1] + 1中大的一个。
//alot[i-1] > allot[i] > alot[i+1] 这种情况 在下一次循环中会处理保证该结点与左结点保持正确逻辑关系.
alot[i] = Math.max(alot[i], alot[i + 1] + 1);
}
}
int res = 0;
for (int e : alot) {
res += e;
}
return res;
}
}
860. 柠檬水找零
class Solution {
public boolean lemonadeChange(int[] bills) {
//下标0 1 2 分别代表5 10美元数量 20不用计数 因为不能用来找零
int[] dollars = new int[2];
Arrays.fill(dollars, 0);
for (int d : bills) {
switch (d) {
case 5:
dollars[0]++;
break;
case 10:
dollars[1]++;
dollars[0]--;
break;
case 20:
if (dollars[1] > 0) {
dollars[1]--;
dollars[0]--;
} else {
dollars[0] -= 3;
}
break;
default:
//error mount of money
return false;
}
if (dollars[0] < 0) return false;
}
return true;
}
}
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步