135. 分发糖果
贪心
import java.util.Arrays;
class Solution {
public int candy(int[] ratings) {
/**
* 初始每个孩子一颗糖
*/
int[] res = new int[ratings.length];
Arrays.fill(res, 1);
/**
* 每个孩子都需要和自己左右的孩子进行比较来满足条件,但无法同时判断左右的大小
* 只能先从左到右遍历,使得每个孩子的右孩子都满足条件,只要右边比左边大,右边的糖果等于左边 + 1
* 然后从右到左遍历,使得每个孩子的左孩子满足条件,只要左边比右边大,左边的糖果应该取本身的糖果数(符合比它左边大) 和右边糖果数 + 1二者的最大值,这样才符合它比它左边的大,也比它右边大
*/
for (int i = 1; i < ratings.length; i++) {
if (ratings[i] > ratings[i - 1]){
res[i] = res[i - 1] + 1;
}
}
/**
* 因为右孩子已经满足条件了,在判断左孩子时,要取res[i + 1] + 1和res[i]的最大值,保证第i个小孩的糖果数量既大于左边也大于右边
*/
for (int i = ratings.length - 2; i >= 0; i--) {
if (ratings[i] > ratings[i + 1]){
res[i] = Math.max(res[i + 1] + 1, res[i]);
}
}
return Arrays.stream(res).sum();
}
}
/**
* 时间复杂度 O(n)
* 空间复杂度 O(1)
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现