【题目描述】
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?
有 N 个小孩站成一列。每个小孩有一个评级。
按照以下要求,给小孩分糖果:
每个小孩至少得到一颗糖果。
评级越高的小孩可以比他相邻的两个小孩得到更多的糖果。
需最少准备多少糖果?
【题目链接】
www.lintcode.com/en/problem/candy/
【题目解析】
这题要求每个小孩至少要领到一颗糖果,但是高级别的小孩要比它旁边的孩子得到的糖果多(小孩的世界也有不平等了),问最少需要发多少糖果?
首先我们会给每个小朋友一颗糖果,然后从左到右,假设第i个小孩的等级比第i - 1个小孩高,那么第i的小孩的糖果数量就是第i - 1个小孩糖果数量在加一。再我们从右到左,如果第i个小孩的等级大于第i + 1个小孩的,同时第i个小孩此时的糖果数量小于第i + 1的小孩,那么第i个小孩的糖果数量就是第i + 1个小孩的糖果数量加一。
【参考答案】
www.jiuzhang.com/solutions/candy/