Candy

来源:互联网 发布:手机视频制作软件 编辑:程序博客网 时间:2024/06/07 02:44

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?

看网上才做出来的,自己想的方法太复杂,网上大家做法基本一样,先从左往右处理左邻居的关系,再从右往左处理右邻居的关系

class Solution {public:    int candy(vector<int> &ratings) {        vector<int> candies(ratings.size(),1);        for(size_t i=1;i<ratings.size();++i){            if(ratings[i] > ratings[i-1]) candies[i]=candies[i-1]+1;        }            for(int i=ratings.size()-1;i>=0;--i){            if(i-1 >= 0 ) {                if(ratings[i-1] > ratings[i]){                    candies[i-1] =max(candies[i]+1,candies[i-1]);                  }                         }        }        int sum = 0;        for(size_t i=0;i<candies.size();++i){            sum+=candies[i];        }        return sum;    }};

0 0
原创粉丝点击