您的位置:首页 > 其它

LeetCode:Candy

2015-05-19 15:30 253 查看
题目描述:

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> number(size,1);
for(int i = 1;i < size;i++)
{
if(ratings[i] > ratings[i-1])
number[i] = number[i-1] + 1;
}
for(int i = size-1;i > 0;i--)
{
if(ratings[i-1] > ratings[i])
number[i-1] = number[i] + 1 > number[i-1] ? number[i] + 1 : number[i-1];
}
int sum = 0;
for(int i = 0;i < size;i++)
sum = sum + number[i];
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: