题目链接:https://leetcode-cn.com/problems/candy/
思路:数组「ratings」是学生评分数组,新建一个等长的「所得糖果」数组「arr」,并且初始化每个元素为1。正向遍历一遍数组「ratings」,如果ratings[i] > ratings[i-1],那么就把arr[i] = arr[i-1] + 1。然后对「ratings」数组反向遍历,如果ratings[i - 1] > ratings[i],并且arr[i - 1] <= arr[i]的时候,使得arr[i - 1] = arr[i] + 1。
代码如下:
/**
* @param {number[]} ratings
* @return {number}
*/
var candy = function(ratings) {
let len = ratings.length;
let arr = new Array(len).fill(1);
for(let i = 1 ; i < len; i++) {
if(ratings[i] > ratings[i-1] ) {
arr[i] = arr[i-1] + 1;
}
}
for(let i= len - 1; i>0; i--) {
if(ratings[i - 1] > ratings[i] && arr[i-1] <= arr[i]) {
arr[i - 1] = arr[i] + 1;
}
}
console.log(arr)
return arr.reduce((a,b) => {
return a + b;
})
};