day-23分发糖果
- 开源代码
- 2025-07-23 01:03:01

参考了答案。。。。。。
思路:所有位置的糖果数应该满足左规则和右规则 左规则:如果ratings[i]>ratings[i-1],则应该比左边多一颗糖果 右规则:如果ratings[i]>ratings[i+1],则应该比右边多一颗糖果 最终糖果数为ans[i]=Math.max(left[i],right[i])
code:
class Solution { public int candy(int[] ratings) { int n=ratings.length; int left[]=new int[n]; int right[]=new int[n]; int ans[]=new int[n]; Arrays.fill(left,1); for(int i=1;i<n;i++){//满足左规则 if(ratings[i]>ratings[i-1]){ left[i]=left[i-1]+1; } } for(int i=0;i<n;i++){ right[i]=left[i]; } for(int i=n-2;i>=0;i--){//满足右规则 if(ratings[i]>ratings[i+1]){ right[i]=right[i+1]+1; } } for(int i=0;i<n;i++){ ans[i]=Math.max(left[i],right[i]); } int total=0; for(int i=0;i<n;i++){ total+=ans[i]; } return total; } }day-23分发糖果由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“day-23分发糖果”