当前位置:   article > 正文

稀碎从零算法笔记Day42-LeetCode:分发糖果

稀碎从零算法笔记Day42-LeetCode:分发糖果

题型:数组、贪心

链接:

来源:LeetCode

题目描述

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

  • 每个孩子至少分配到 1 个糖果。
  • 相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

题目样例

题目思路

贪心,在左边的孩子满足【规则】的条件下,让右边的孩子也满足【规则】

C++代码

  1. class Solution {
  2. public:
  3. int candy(vector<int>& ratings) {
  4. // 让点满足两个条件:下一个比自己大的,比自己多一个糖,从左边和右边分别进行遍历
  5. vector<int> candyLeft(ratings.size(),1);//从左向右遍历
  6. vector<int>candyRight(ratings.size(),1);//从右向左遍历
  7. // 左遍历完
  8. for(int i=0;i<ratings.size()-1;++i)
  9. {
  10. if(ratings[i] < ratings[i+1])
  11. candyLeft[i+1] = candyLeft[i] + 1;
  12. }
  13. // 右边遍历完
  14. for(int i=ratings.size()-1;i>0;--i)
  15. {
  16. if(ratings[i-1] > ratings[i])
  17. candyRight[i-1] = candyRight[i] + 1;
  18. }
  19. int sum = 0;
  20. for(int i=0;i<ratings.size();i++)
  21. sum += max(candyLeft[i],candyRight[i]);
  22. return sum;
  23. }
  24. };

结算页面

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/431347
推荐阅读
相关标签
  

闽ICP备14008679号