原题链接:  http://oj.leetcode.com/problems/candy/  
这道题用到的思路和 Trapping Rain Water 是一样的,用动态规划。基本思路就是进行两次扫描,一次从左往右,一次从右往左。第一次扫描的时候维护对于每一个小孩左边所需要最少的糖果数量,存入数组对应元素中,第二次扫描的时候维护右边所需的最少糖果数,并且比较将左边和右边大的糖果数量存入结果数组对应元素中。这样两遍扫描之后就可以得到每一个所需要的最最少糖果量,从而累加得出结果。方法只需要两次扫描,所以时间复杂度是O(2*n)=O(n)。空间上需要一个长度为n的数组,复杂度是O(n)。代码如下:

public int candy(int[] ratings) {if(ratings==null || ratings.length==0){return 0;}int[] nums = new int[ratings.length];nums[0]=1;for(int i=1;i<ratings.length;i++){if(ratings[i]>ratings[i-1]){nums[i] = nums[i-1]+1;}else{nums[i] = 1;}}int res = nums[ratings.length-1];for(int i=ratings.length-2;i>=0;i--){int cur = 1;if(ratings[i]>ratings[i+1]){cur = nums[i+1]+1;}res += Math.max(cur,nums[i]);nums[i] = cur;}return res;
}

这种两边扫描的方法是一种比较常用的技巧,LeetCode中 Trapping Rain Water 和这道题都用到了,可以把这种方法作为自己思路的一部分,通常是要求的变量跟左右元素有关系的题目会用到哈。

Candy -- LeetCode相关推荐

  1. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  2. Java入门算法(贪心篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

  3. leetcode 135. Candy | 135. 分发糖果(原创图文详解,Java)

    题目 https://leetcode.com/problems/candy/ 题解 思路 首先,根据题意,这是一个分糖果问题.本题需要满足两个条件: 每个孩子至少有一个糖果 rating 值较大的孩 ...

  4. C#LeetCode刷题之#888-公平的糖果交换(Fair Candy Swap)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3758 访问. 爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝 ...

  5. 【重点】LeetCode 135. Candy

    LeetCode 135. Candy 博客转载自:http://www.cnblogs.com/grandyang/p/4575026.html 这个题一看就很难...但答案真是清新脱俗啊... S ...

  6. [LeetCode]135.Candy

    [题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  7. Java描述 LeetCode,135. Candy 分发糖果

    大家好,我是河海哥,专注于后端,如果可以的话,想做一名code designer而不是普通的coder,一起见证河海哥的成长,您的评论与赞是我的最大动力,如有错误还请不吝赐教,万分感谢.一起支持原创吧 ...

  8. LeetCode之Candy

    [题目] There areNchildren standing in a line. Each child is assigned a rating value. You are giving ca ...

  9. LeetCode OJ - Candy

    题目: There are N children standing in a line. Each child is assigned a rating value. You are giving c ...

最新文章

  1. 【CV冬季划】终极进阶,超30个项目实战+3本书+3年知识星球
  2. USACO2.2【统计,dp,模拟,位运算】
  3. 基于centos8搭建zookeeper集群
  4. 无法获取签名信息,请上传有效包(110506)
  5. 每日一题:leetcode1128.等价多米诺骨牌对数
  6. cache工作的详细过程
  7. 计算邮资(信息学奥赛一本通-T1052)
  8. java 蓝桥杯 乘法次数(题解)
  9. (84)FPGA面试题-多bit跨时钟域
  10. mysql orderby 指定值_首先在MySQL中指定字段值ORDER BY
  11. 关于DIV+CSS和XHTML+CSS的理解
  12. MySql is marked as crashed and should be repaired问题
  13. mysql清除内存不足_MySQL内存不足怎么办
  14. 软件评测师教程简介(第二篇-测试技术)
  15. CloudDrive — 将阿里云盘变成电脑本地磁盘,网盘挂载映射为本地磁盘!
  16. linux系统日志及其管理
  17. Atcode120E 1D Party
  18. Latex 的交叉引用
  19. 超市信息管理程序c语言购物车,c语言购物车代码
  20. 做回归分析时import ConvergenceWarning出错的问题

热门文章

  1. 大坝平台结构——志豪未来科技有限公司
  2. Linux下磁盘常见错误分析与检测工具使用
  3. 实验二——网络嗅探与欺骗.
  4. 王唯佳被南开计算机学院录取,被南开录取!沈阳庞贝病少年王唯佳,祝贺你!辽宁日报 昨天辽宁...
  5. android仿qq折叠,android列表收缩与展开仿QQ好友列表(非常详细,附源码)
  6. android物理键盘灯控制,Android按键灯流程分析
  7. 在 CentOS 中安装 JDK(二)
  8. 我的第一篇 实习报告
  9. SQL Server 2008 简体中文正式版下载地址(附序列号)
  10. 第三代计算机的操作系统,操作系统基础