leetcode刷题系列C++-candy

来源:互联网 发布:淘宝拍照单反相机 知乎 编辑:程序博客网 时间:2024/06/13 07:57

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?

Subscribe to see which companies asked this question

class Solution {public:    int candy(vector<int>& ratings) {        int length = ratings.size();        vector<int> increment(length);        for(int i = 1,inc = 1; i < length; ++i)        {            if(ratings[i] > ratings[i - 1])            {                increment[i] = max(inc++,increment[i]);            }            else            {                inc = 1;            }        }        for(int i = length-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] + length,length);    }};

从左到右扫描一遍

然后从右到左扫描一遍

0 0
原创粉丝点击