美文网首页
135. 分发糖果

135. 分发糖果

作者: Jason_Shu | 来源:发表于2019-03-26 16:45 被阅读0次

    题目链接: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. 分发糖果

          本文链接:https://www.haomeiwen.com/subject/bxknvqtx.html