分发糖果

题目链接:https://leetcode-cn.com/problems/candy/
题目描述:

题解:


class Solution {
public:
    int candy(vector<int>& ratings) {
        vector<int> candyVec(ratings.size(), 1);
        int count = 0;
        //从前向后遍历,查找右值比左值大
        for(int i = 1; i < ratings.size(); i++)
        {
            if(ratings[i] > ratings[i - 1])
                candyVec[i] = candyVec[i - 1] + 1;
        }
        //从后向前遍历,查找左值比右值大
        for(int i = ratings.size() - 2; i >= 0; i--)
        {
            if(ratings[i] > ratings[i + 1])
                candyVec[i] = max(candyVec[i], candyVec[i + 1] + 1);
        }
        for(int iter: candyVec)
            count += iter;
        //for (int i = 0; i < candyVec.size(); i++) count += candyVec[i];
        return count;

    }
};

原文地址:https://www.cnblogs.com/ZigHello/p/14888616.html