[LeetCode] Candy
来源:互联网 发布:php开发工具中文版 编辑:程序博客网 时间:2024/05/21 10:19
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
- Each child must have at least one candy.
- Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
通过分析,我们可以发现:无外乎就是3种情况:举例来说
(1) rating[0]>rating[1] 如果 candy[0]<=candy[1] candy[0]=candy[1]+1;
(1) rating[0]=rating[1] 不用管,继续走
(1) rating[0]<rating[1] 如果 candy[0]>=candy[1] candy[1]=candy[0]+1;
正的走一遍,我们只考虑i和i+1的关系,也就是child和他右边孩子的糖果数量
反过来扫一遍, 我们只考虑 i 和i-1的关系,child和他左边孩子的糖果数量
这样每一个child的左右就都满足了。一次通过
public int candy(int[] ratings) { int n=ratings.length; int[] c= new int[n]; Arrays.fill(c,1); for(int i=0;i<n-1;i++){ if(ratings[i]>ratings[i+1] && c[i]<=c[i+1]){ c[i]=c[i+1]+1; } else if(ratings[i]<ratings[i+1] && c[i]>=c[i+1]){ c[i+1]=c[i]+1; } } for(int i=n-1;i>=1;i--){ if(ratings[i]>ratings[i-1] && c[i]<c[i-1]){ c[i]=c[i-1]+1; } else if(ratings[i]<ratings[i-1] && c[i-1]<=c[i]){ c[i-1]=c[i]+1; } } int sum=0; for(int candy: c){ sum+=candy; } return sum; }
0 0
- Leetcode: Candy
- LeetCode:Candy
- [leetcode]Candy
- Leetcode: Candy
- 【leetcode】Candy
- LeetCode:Candy
- [LeetCode] Candy
- [LeetCode]Candy
- [LeetCode] Candy
- 【LeetCode】Candy
- LeetCode | Candy
- Leetcode: Candy
- Candy - LeetCode
- leetcode Candy
- LeetCode Candy
- candy leetcode
- Candy -- LeetCode
- [LeetCode] Candy
- android系列:Bitmap的一些操作
- linux键盘及终端快捷键
- 字符串处理—正则表达式和模式匹配
- [Java Performance] 缓冲I/O(Buffered I/O)
- 黑马程序----关于异步与读取本地文件
- [LeetCode] Candy
- Android开发之使用PULL解析和生成XML
- OpenCV图像中的数据类型
- Markdown+Pandoc,打通写作界的任督二脉!
- 光耦参数解析
- mysql主键,外键,索引
- 【Windows学习】Windows核心编程-字符编码
- php Undefined index和Undefined variable的解决方法
- request和response复习总结