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;
    }
};
相关推荐
沙雕不是雕又菜又爱玩2 分钟前
leetcode第12、13、14、15题(C++)
c++·算法·leetcode
汀、人工智能8 分钟前
[特殊字符] 第50课:最大路径和
数据结构·算法·数据库架构·图论·bfs·最大路径和
啦啦啦!11 分钟前
项目环境的搭建,项目的初步使用和deepseek的初步认识
开发语言·c++·人工智能·算法
AI成长日志11 分钟前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
算法鑫探14 分钟前
2025 图形(蓝桥杯十六届C组程序题 C 题)
c语言·数据结构·算法·新人首发
田梓燊19 分钟前
leetcode 54
算法·leetcode·职场和发展
wuweijianlove23 分钟前
算法性能优化中的编译器指令重排影响的技术4
算法
沉鱼.4427 分钟前
第十五届题目
linux·运维·算法
我头发多我先学32 分钟前
C++ STL vector 原理到模拟实现
c++·算法
机器学习之心35 分钟前
信号分解和小波阈值联合降噪 | NRBO-FMD基于牛顿拉夫逊算法优化特征模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码
算法·matlab·重构·nrbo-fmd·特征模态分解