Leetcode 135-分发糖果

1)所有人分1个candy

2)从左往右查看,若满足左规则,令 candy[i] =candy[i - 1] + 1

3)从右往左查看,若满足右规则,令 candy[j] =Math.max(candy[j + 1] + 1,candy[j]),取最大值是为了在满足右规则的时候不破坏左规则

bash 复制代码
class Solution {
    public int candy(int[] ratings) {
        if(ratings.length==0) return 0;
        int candy[] =new int[ratings.length];
        int total=0;
        candy[0]=1;
        //从左向右遍历数组使其满足左规则
        for(int i=1;i<ratings.length;i++){
            candy[i]=1;
            if(ratings[i]>ratings[i-1]){
                candy[i]=candy[i-1]+1;
            }
        }
        //从右向左遍历数组使其满足左规则
        for(int i=ratings.length-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]){
                candy[i]=Math.max(candy[i+1]+1,candy[i]);
            }
        }
         //遍历获得糖果总数
        for(int i=0;i<ratings.length;i++){
            total+=candy[i];
        }
        return total;

    }
}
相关推荐
crescent_悦14 小时前
PTA L1-020 帅到没朋友 C++
数据结构·c++·算法
鳄鱼儿14 小时前
密码算法的OID查阅
算法
lxh011315 小时前
螺旋数组题解
前端·算法·js
czlczl2002092515 小时前
算法:二叉树的公共祖先
算法
稚辉君.MCA_P8_Java16 小时前
Gemini永久会员 Java动态规划
java·数据结构·leetcode·排序算法·动态规划
小白程序员成长日记16 小时前
2025.11.23 力扣每日一题
算法·leetcode·职场和发展
16_one17 小时前
autoDL安装Open-WebUi+Rag本地知识库问答+Function Calling
人工智能·后端·算法
散峰而望18 小时前
C++数组(三)(算法竞赛)
开发语言·c++·算法·github
q***952218 小时前
SpringMVC 请求参数接收
前端·javascript·算法
初级炼丹师(爱说实话版)19 小时前
多进程与多线程的优缺点及适用场景总结
算法