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;
}
};