第八周——135. Candy

来源:互联网 发布:妙味课堂js课后练习 编辑:程序博客网 时间:2024/06/03 18:02

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?

目标:给一群孩子发糖,每个孩子有一个标准值。开始时,每个孩子有一颗糖,规定标准值比他旁边高的孩子所得到的糖也要比他旁边孩子的多。

采用贪心算法,从前往后和从后往前两次遍历,开始时从前往后遍历,给孩子i+1的糖果数=给孩子i的糖果数+1,之后从后往前遍历,给孩子i-1的糖果数=max(给孩子i的糖果数+1,给孩子i-1的糖果数)。确认标准值高的孩子一定持有比他两边孩子更多的糖果。

class Solution {public:    int candy(vector<int>& ratings) {        int size=ratings.size();        if(size<=1)            return size;        vector<int> nums(size,1);        for(int i=1;i< size;i++)        {            if(ratings[i]>ratings[i-1])                nums[i]=nums[i-1]+1;        }        for(int i=size-1;i>0;i--)        {            if(ratings[i-1]>ratings[i])                nums[i-1]=max(nums[i]+1,nums[i-1]);        }        int result=0;        for(int i=0;i<size;i++)        {            result+=nums[i];        }        return result;    }};
0 0
原创粉丝点击