leetcode[135]Candy

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

  • Each child must have at least one candy.
  • Children with a higher rating get more candies than their neighbors.

What is the minimum candies you must give?

class Solution {
public:
    int candy(vector<int> &ratings) {
        if(ratings.empty())return 0;
        int n=ratings.size();
        int *A=new int[n];
        A[0]=1;
        for(int i=1;i<n;i++)
        {
            if(ratings[i]>ratings[i-1])A[i]=A[i-1]+1;
            else A[i]=1;
        }
        int res=A[n-1];
        for(int i=n-2;i>=0;i--)
        {
            if(ratings[i]>ratings[i+1])A[i]=A[i]>A[i+1]+1?A[i]:A[i+1]+1;
            res+=A[i];
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/Vae1990Silence/p/4281249.html