135. 分发糖果

题目链接: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;
    })
};

你可能感兴趣的:(135. 分发糖果)