题目:
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) {
int size = ratings.size();
vector<int>m_vec(size);
int inivalue =1;
for(int i = 1;i<size;i++)
{
if(ratings[i]>ratings[i-1])
{
m_vec[i] = inivalue++;
}
else
{
inivalue = 1;
}
}
inivalue = 1;
for(int j = size-2;j>=0;j--)
{
if(ratings[j]>ratings[j+1])
{
m_vec[j] = max(inivalue++,m_vec[j]);
}
else
{
inivalue = 1;
}
}
return accumulate(m_vec.begin(),m_vec.end(),size);
}
};