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;

    }

};

 

你可能感兴趣的:(LeetCode)