题目描述
思路分析
先给每个小伙伴一个糖果,如果不够直接返回-1,之后分成俩步:
步骤一:从左往右,若右边的孩子评分大于左边,右边孩子可以拿到的糖果数加一;
步骤二:步骤一结束后,从右往左,左边孩子的评分大于右边并且不违背步骤一的情况下;左边孩子可以拿糖果加一
代码解析
/**
* @param {number[]} ratings
* @return {number}
*/
var candy = function(ratings) {
//给每个孩子相应的糖果
let nums = new Array(ratings.length).fill(1);
//步骤一 从左往右
for(let i=1;i<ratings.length;i++){
if(ratings[i]>ratings[i-1]){
nums[i] = nums[i-1]+1
}
}
//步骤二 从右往左
for(let j= ratings.length-1;j>0;j--){
if(ratings[j]<ratings[j-1]&& nums[j-1]<=nums[j])
nums[j-1] = nums[j]+1
}
let sum = 0
//计算糖果数
nums.forEach(item => sum += item)
return sum
};
后话
只是记录,正在找工作中,各位老板缺前端的可以私信,会vue,react,ts,js,22届本科毕业,一年工作经验