LeetCode Candy
来源:互联网 发布:蒙古表情 软件 编辑:程序博客网 时间:2024/04/30 00:52
LeetCode解题之Candy
原题
一直线上站了N个孩子,每个孩子都有一个属于自己的数字,现在按照如下规则给孩子分发糖果:每个孩子至少有一个糖果;相邻的孩子中数字比较大的那个拿的糖果也比较多。求最少要发掉多少个糖果。
注意点:
- 无
例子:
输入: ratings = [1, 2, 3, 2]
输出: 7
解题思路
从前往后遍历的时候,我们只考虑升序的序列,对于其中一段升序的序列,最理想的情况是按照1,2,3…这样分发糖果;而对于降序的序列,如果从后往前遍历就也变成升序的了。通过前序和后序遍历后,升序与降序的交接处那个点会有两个值,因为要比两边的孩子拿到的糖果都多,所以取较大的那个值。这时候得到的数组就是在满足题目要求前提下每个孩子拿到的最少的糖果数,返回它的和即可。
AC源码
class Solution(object): def candy(self, ratings): """ :type ratings: List[int] :rtype: int """ n = len(ratings) candy = [1] * n for i in range(1, n): if ratings[i] > ratings[i - 1]: candy[i] = candy[i - 1] + 1 for i in range(n - 2, -1, -1): if ratings[i] > ratings[i + 1]: candy[i] = max(candy[i], candy[i + 1] + 1) return sum(candy)if __name__ == "__main__": assert Solution().candy([1, 2, 3, 7, 4, 3, 2, 1]) == 21
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
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
- KNN
- java中常见的设计模式
- 唯爱小粽子:软件架构的典型组成部分-资源管理
- scala中call-by-name和call-by-value
- R语言学习二 数据类型
- LeetCode Candy
- 关于Samba的SELiunx配置
- 加密
- Android应用使用Multidex突破64K方法数限制
- iOS应用真机调试/证书配置/打包/发布国际化
- 接口电平标准
- 对java中的接口和实现类的深入理解
- 杨辉三角
- 循环中的推进