class Solution {
public int candy(int[] ratings) {
int[] left = new int[ratings.length];
int[] right = new int[ratings.length];
Arrays.fill(left, 1);
Arrays.fill(right, 1);
for(int i = 1; i < ratings.length; i++)
if(ratings[i] > ratings[i - 1]) left[i] = left[i - 1] + 1;
int count = left[ratings.length - 1];
for(int i = ratings.length - 2; i >= 0; i--) {
if(ratings[i] > ratings[i + 1]) right[i] = right[i + 1] + 1;
count += Math.max(left[i], right[i]);
}
return count;
}
}
Leetcode 135-分发糖果
最新推荐文章于 2025-12-18 17:00:31 发布
本文介绍了一种解决糖果分配问题的有效算法。通过双向遍历数组并使用两个辅助数组来记录左右两边孩子比邻居优秀时所需的最少糖果数,最终确保每个更优秀的孩子获得更多的糖果。此算法的时间复杂度为O(n)。
166

被折叠的 条评论
为什么被折叠?



