135. 分发糖果

常数空间的那个方法我没看懂

使用贪心算法

根据题目要求,相邻两个孩子评分更高的孩子会获得更多的糖果

也就相当于左规则要求这个孩子比他左边的孩子获得更多糖果,右规则要求这个孩子比他右边的孩子获得更多糖果,在做有规则均满足时,符合要求。

于是

从左到右遍历,右大于左,则右多分发一个糖果,完成左规则,反向完成右规则。

最后遍历,每个孩子取左右规则下最大糖果数。

cpp 复制代码
class Solution {
public:
    int candy(vector<int>& ratings) {
        int n = ratings.size();
        vector<int> left(n, 0);
        vector<int> right(n, 0);
        for (int i = 1; i < n; ++i) {
            if (ratings[i] > ratings[i - 1]) {
                left[i] = left[i - 1] + 1;
            }
        }
        for (int i = n - 2; i >= 0; --i) {
            if (ratings[i] > ratings[i + 1]) {
                right[i] = right[i + 1] + 1;
            }
        }
        int sum = n;
        for (int i = 0; i < n; ++i) {
            sum += max(left[i], right[i]);
        }
        return sum;
    }
};
相关推荐
nlpming7 分钟前
OpenClaw 代码解析
算法
学习永无止境@10 分钟前
MATLAB中矩阵转置
算法·matlab·fpga开发·矩阵
七颗糖很甜10 分钟前
雨滴谱数据深度解析——从原始变量到科学产品的Python实现【下篇】
python·算法·pandas
nlpming11 分钟前
OpenClaw system prompt定义
算法
nlpming11 分钟前
OpenClaw安装配置及简介
算法
爱码小白12 分钟前
MySQL 常用数据类型的系统总结
数据库·python·算法
玛丽莲茼蒿19 分钟前
Leetcode hot100 【中等】括号生成
算法·leetcode·职场和发展
小欣加油21 分钟前
leetcode 128 最长连续序列
c++·算法·leetcode·职场和发展
汀、人工智能34 分钟前
[特殊字符] 第94课:删除无效的括号
数据结构·算法·数据库架构·图论·bfs·删除无效的括号
pwn蒸鱼40 分钟前
leetcode:92. 反转链表 II
算法·leetcode·链表