leetcode困难135分发糖果

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode困难135分发糖果相关的知识,希望对你有一定的参考价值。


思路:贪心遍历两次
为了使中间比相邻两边大,必须从前向后,和从后向前遍历两遍,从前向后考虑中间比左边大,从后向前考虑中间比右边大。
如果同时考虑左右一定会顾此失彼

class Solution {
    public int candy(int[] ratings) {
        int len=ratings.length;
        int[] candys=new int[len];
        Arrays.fill(candys, 1);
        for(int i=1;i<len;i++){
            if(ratings[i]>ratings[i-1]) candys[i]=candys[i-1]+1;
        }
        for(int i=len-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]) candys[i]=Math.max(candys[i],candys[i+1]+1);
        }
        return Arrays.stream(candys).sum();
    }
}

以上是关于leetcode困难135分发糖果的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第135题—分发糖果—Python实现

[LeetCode] 135. 分发糖果

LeetCode135.分发糖果

Leetcode No.135 分发糖果(贪心)

Leetcode No.135 分发糖果(贪心)

leetcode(135)分发糖果