135. 分发糖果贪心算法
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了135. 分发糖果贪心算法相关的知识,希望对你有一定的参考价值。
135. 分发糖果
一、题目
n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。
二、参考代码
class Solution
public int candy(int[] ratings)
int[] canday = new int[ratings.length];
// 把所有孩子的糖果数初始化为 1;
Arrays.fill(canday,1);
// 先从左往右遍历,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1;
for(int i = 1; i < canday.length ; i++)
if(ratings[i-1] < ratings[i])
canday[i] = canday[i-1]+1;
// 再从右往左遍历,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。
for(int i = canday.length - 1; i > 0; i--)
if(ratings[i-1] > ratings[i])
canday[i-1] = Math.max(canday[i-1],canday[i]+1);
int ans = 0;
for(int i = 0; i < canday.length; i++)
ans += canday[i];
return ans;
以上是关于135. 分发糖果贪心算法的主要内容,如果未能解决你的问题,请参考以下文章