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分发糖果的主要内容,如果未能解决你的问题,请参考以下文章