135. 分发糖果

  1. 初始化一个candy数组,代表每个孩子的糖果数量,初始化为1
  2. 从左向右遍历,比较右孩子和左孩子的评分大小,右孩子比左孩子大,糖果数就变为左孩子+1image.png
  3. 从右向左遍历,比较左孩子和右孩子的藕粉大小,左孩子比右孩子大,糖果数就变为左孩子+1和当前糖果数的最大值

image.png

  1. class Solution {
  2. public:
  3. int candy(vector<int>& ratings) {
  4. vector<int> candy(ratings.size(),1);
  5. for(int i =1;i<ratings.size();i++)
  6. {
  7. if(ratings[i]>ratings[i-1])
  8. candy[i]= candy[i-1]+1;
  9. }
  10. for(int i=ratings.size()-2;i>=0;i--)
  11. {
  12. if(ratings[i]>ratings[i+1])
  13. candy[i] = max(candy[i+1]+1,candy[i]);
  14. }
  15. int sum =0;
  16. for(int i=0;i<candy.size();i++)
  17. {
  18. sum += candy[i];
  19. }
  20. return sum;
  21. }
  22. };