题解 | #分糖果问题# [S-P0]

分糖果问题

http://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352

[S-P2] 贪心
先满足从左向右,再满足从右向左
从右向左时,如果i糖比i-1糖多 => i分比i-1分高,i-1这波一定不需要再多拿糖。
所以i只需要满足和i+1之间的关系就行
import java.util.*;

public class Solution {
    public int candy (int[] arr) {
      int[] candies = new int[arr.length];
      Arrays.fill(candies, 1);
      
      for (int i = 1; i < arr.length; i++) {
        if (arr[i] > arr[i-1]) 
          candies[i] = candies[i-1] + 1;
      }
      
      for (int i = arr.length-2; i >= 0; i--) {
        if (arr[i] > arr[i+1]) {
         if (candies[i] > candies[i+1]) continue;  // already has more candies
         else candies[i] = candies[i+1]+1;
        }
      }
      
      int total = 0;
      for (int c : candies) {
        total += c;
      }
      return total;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务