2023.8.1
这道题只从前向后遍历会出各种问题,所以最后决定向前向后各遍历一次。 先定义一个饼干数组biscuits,记录每个孩子的饼干数量,初始化每个孩子饼干数量为1。 然后从前向后遍历、从后向前遍历,使其满足“相邻两孩子评分更高的孩子会获得更多饼干”的条件 。 代码如下:
class Solution {
public:int candy(vector<int>& ratings) {vector<int> biscuits(ratings.size(),1);//从前往后for(int i=1; i<ratings.size(); i++){if(ratings[i] > ratings[i-1]){biscuits[i] = biscuits[i-1] + 1;}}//从后往前for(int i=ratings.size()-2; i>=0; i--){if(ratings[i] > ratings[i+1] && biscuits[i] <= biscuits[i+1]){biscuits[i] = biscuits[i+1] + 1;}}//统计总饼干个数int sum = 0;for(int num : biscuits){sum += num;}return sum;}
};