Lintcode412 Candy solution 题解

【题目描述】

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/

你可能感兴趣的:(Lintcode412 Candy solution 题解)