leetcode Candy

来源:互联网 发布:淘宝新势力周怎么报名 编辑:程序博客网 时间:2024/05/28 16:12

此问题可以遍历三遍ratings解决:

第一遍遍历从左向右,若小孩 i 与其左边的小孩 i-1 满足如下: 若 i 的级别比 i-1 大,则candyNum[i] = candyNum[i-1]+1;

第二遍从右向左遍历,若小孩 i 与其右边的小孩 i+1 满足如下: 若 I 的级别比 i+1大且candyNum[i] <= candyNum[i+1] , 则candyNum[i] = candyNum[i+1]+1;

第三遍遍历求出总数


代码

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



0 0
原创粉丝点击