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;

    }
}
相关推荐
wuqingshun3141593 分钟前
蓝桥杯 17. 通电
c++·算法·职场和发展·蓝桥杯·深度优先·动态规划
卷卷的小趴菜学编程20 分钟前
算法篇-----滑动窗口
数据结构·算法·双指针·滑动窗口·哈希表·数组相关
zxctsclrjjjcph39 分钟前
【动态规划】子序列问题
开发语言·c++·算法·动态规划·力扣
对对对,你说啥都对44 分钟前
用输入输出变量根据超稳定性理论设计模型参考自适应系统
算法·自适应控制·超稳定性理论
Sheep Shaun1 小时前
C++ STL简介:构建高效程序的基石
开发语言·数据结构·c++·算法
点云SLAM1 小时前
C++ 中二级指针的正确释放方法
开发语言·数据结构·c++·人工智能·算法
m0_748319083 小时前
图论之幻想迷宫
算法
jia_jia_LL3 小时前
备战蓝桥杯国赛第一天-atcoder-beginner-contest404
c++·算法·蓝桥杯·图论
朝九晚五ฺ4 小时前
【算法学习】递归、搜索与回溯算法(一)
数据结构·学习·算法·深度优先
张书名4 小时前
Leetcode刷题记录29——矩阵置零
算法·leetcode·矩阵