class Solution { public int candy(int[] ratings) { // 获取评分数组的长度 int len = ratings.length; // 创建一个长度为len的整型数组candy,用于存储每个孩子分配到的糖果数量 int[] candy = new int[len]; // 第一个孩子的糖果数量初始化为1 candy[0] = 1; // 遍历评分数组,从第二个孩子开始 for (int i = 1; i < len; i ++) { // 如果当前孩子的评分比前一个孩子的评分高,则当前孩子的糖果数量应比前一个孩子的糖果数量多1 candy[i] = ratings[i] > ratings[i - 1] ? candy[i - 1] + 1 : 1; } // 初始化总糖果数量为最后一个孩子的糖果数量 int all = candy[len - 1]; // 从倒数第二个孩子开始向前遍历评分数组 for (int i = len - 2; i >= 0; i --) { // 如果当前孩子的评分比后一个孩子的评分高,则当前孩子的糖果数量应比后一个孩子的糖果数量多1,但同时不能少于已经分配的糖果数量 candy[i] = ratings[i] > ratings[i + 1] ? Math.max(candy[i + 1] + 1, candy[i]) : candy[i]; // 累加当前孩子的糖果数量到总糖果数量中 all += candy[i]; } // 返回所有孩子的糖果总数 return all; } }
力扣135.分发糖果
于 2024-08-30 10:41:24 首次发布