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;
    }
};
相关推荐
带多刺的玫瑰1 分钟前
Leecode#16刷题之最接近的三数之和
数据结构·算法
Yfhonier7 分钟前
岛屿数量(DFS)
算法·深度优先
橘子汽水1688 分钟前
Leetcode15:三数之和
java·数据结构·算法
黄金龙PLUS11 分钟前
ASCON置换算法的优缺点
算法·网络安全·密码学·哈希算法·同态加密
邪修king17 分钟前
Re:Linux 系统篇(十六):进程篇(五):O (1) 调度算法深度解析 —— 优先级数组、位图优化与活跃 / 过期双队列
linux·运维·算法
Yfhonier33 分钟前
6440. 极大连通图个数(DFS)
数据结构·算法·深度优先
玖玥拾1 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展
Cccp.1231 小时前
【leetcode】(一)认识复杂度和简单排序算法
算法·排序算法
旖旎夜光1 小时前
LeetCode 974:和可被 K 整除的子数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和