前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode|困难|两维度贪心|135. 分发糖果(前向贪心+后向贪心)

Leetcode|困难|两维度贪心|135. 分发糖果(前向贪心+后向贪心)

作者头像
SL_World
发布2021-09-18 16:37:50
3690
发布2021-09-18 16:37:50
举报
文章被收录于专栏:X
在这里插入图片描述
在这里插入图片描述

1 双向贪心算法

在这里插入图片描述
在这里插入图片描述

贪心策略:

  • 从左到右遍历,只比较右孩子评分比左边大的情况
  • 从右到左遍历,只比较左孩子评分比右边大的情况
代码语言:javascript
复制
class Solution {
public:
    int candy(vector<int>& ratings) {
        int size = ratings.size();
        vector<int> num(size, 1);
        // 1.前向贪心
        for (int i = 1; i < size; i++) 
            if (ratings[i] > ratings[i-1])
                num[i] = num[i-1] + 1;
        // 2.后向贪心
        for (int i = size - 2; i >= 0; i--) 
            if (ratings[i] > ratings[i+1])
                // 第i个孩子也许比第i+1孩子拿到的糖果本来就多, 故用max
                num[i] = max(num[i], num[i+1] + 1);
        return accumulate(num.begin(), num.end(), 0);
    }
};
在这里插入图片描述
在这里插入图片描述

致谢

图片源于「代码随想录」公众号,欢迎大家关注大佬公号

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 双向贪心算法
  • 致谢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档