LeetCode Candy Greedy
2015-09-01 20:49
316 查看
思路:贪心。
Each child must have at least one candy.
刚开始,每个孩子都得一个candy。
Children with a higher rating get more candies than their neighbors.
从左往右扫描一遍,处理 右孩子比左孩子等级高 的情况;
再从右往左扫描一遍,处理 左孩子比右孩子等级高 且 左孩子比右孩子candy数少 的情况;
Each child must have at least one candy.
刚开始,每个孩子都得一个candy。
Children with a higher rating get more candies than their neighbors.
从左往右扫描一遍,处理 右孩子比左孩子等级高 的情况;
再从右往左扫描一遍,处理 左孩子比右孩子等级高 且 左孩子比右孩子candy数少 的情况;
class Solution { public: int candy(vector<int>& ratings) { int len = ratings.size(); if(len == 0) { return 0; } if(len == 1) { return 1; } int min_sum = 0; vector<int> res(len, 1); //from left to right for(int i = 0; i <= len - 2; ++i) { if(ratings[i + 1] > ratings[i]) { res[i + 1] = res[i] + 1; } } //from right to left for(int i = len - 1; i >= 1; --i) { if(ratings[i - 1] > ratings[i] && res[i - 1] <= res[i]) { res[i - 1] = res[i] + 1; } } //sum for(int i = 0; i < len; ++i) { min_sum += res[i]; } return min_sum; } };
相关文章推荐
- 输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字
- 编程珠玑 第十五章 散列表应用 hash字符串
- ASD控制的小球_EasyX教程作业
- POJ3270 数学题置换
- Welcome to JAVA!(第一课课后练习)
- Armijo线搜索
- 我有DIY一Android遥控-所有开源
- 《Java编程思想》第一二章
- Number of Islands —— Leetcode(重要的一类题)
- 遍历单链表一次,找出链表中间结点
- 多线程(线程间通信-多生产者多消费者问题-JDK1.5新特性-Lock
- UVA 11374 最短路
- 瞎玩php基础——语言基础,流程控制语句
- 设计模式系列--备忘录模式
- MySQL 命令环境变量设置方法
- 晶晶赴约会
- init kill signal的数字总结
- 二叉搜索树的后序遍历路径(《剑指offer》面试题24)
- HDU 4474 Yet Another Multiple Problem
- DataPersistence 文件管理