标签:0135 ratings int res 复杂度 Candy 数量 糖果 LeetCode
1. 题目描述
2. Solution 1
1、思路分析
可以将“Children with a higher rating get more candies than their neigbors”(相邻的孩子中,评分高的孩子必须获得更多的糖果)拆分为两个原则,分别处理。左规则: 当ratings[i-1] < ratings[i]时,i号学生的糖果数量将比i-1号孩子的糖果数量多。右规则: 当ratings[i] > ratings[i+1]时,i号学生的糖果数量将比i+1号孩子的糖果数量多。
遍历该数组两次,处理出每一个学生分别满足左规则或右规则时,最少需要被分得的糖果数量。每个人最终分得的糖果数量即为这两个数量的最大值。
2、代码实现
package Q0199.Q0135Candy;
import java.util.Arrays;
public class Solution {
public int candy(int[] ratings) {
int n = ratings.length;
int[] res = new int[n];
Arrays.fill(res, 1);
for (int i = 1; i < n; i++) {
if (ratings[i] > ratings[i - 1])
res[i] = res[i - 1] + 1;
}
for (int i = n - 1; i > 0; i--) {
if (ratings[i - 1] > ratings[i])
res[i - 1] = Math.max(res[i] + 1, res[i - 1]);
}
int sum = 0;
for (int r : res) sum += r;
return sum;
}
}
3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(n)
标签:0135,ratings,int,res,复杂度,Candy,数量,糖果,LeetCode 来源: https://www.cnblogs.com/junstat/p/16294357.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。