Candy

来源:互联网 发布:电影票软件 编辑:程序博客网 时间:2024/05/02 05:10

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?


思路很不错的一道题:

int candy(vector<int> &ratings) {        const int n=ratings.size();        vector<int> increment(n);                //左右各扫描一遍        for(int i=1,inc=1;i<n;i++)        {            if(ratings[i]>ratings[i-1])                increment[i] =max(inc++,increment[i]);            else                inc =1;        }                for(int i=n-2,inc =1;i>=0;i--)            if(ratings[i]>ratings[i+1])                increment[i] =max(inc++,increment[i]);            else                inc =1;                                        return accumulate(&increment[0],&increment[0]+n,n);    }


 

0 0
原创粉丝点击