[LeetCode] Candy
2014-06-25 15:58
267 查看
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?
例子:
input : 1 1 7 6 5 9 7
第一次扫描: 1 1 2 1 1 2 1
第二次扫描: 1 1 3 2 1 2 1
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?
例子:
input : 1 1 7 6 5 9 7
第一次扫描: 1 1 2 1 1 2 1
第二次扫描: 1 1 3 2 1 2 1
class Solution { public: int candy(vector<int> &ratings) { int res = 0; int n = ratings.size(); if (n == 0) { return res; } int *t = new int ; for (int i = 0; i < n; ++i) { t[i] = 1; } //从左向右扫描 ,保证当前比前一个多 for (int i = 1; i < n; ++i) { if (ratings[i] > ratings[i-1]) { t[i] = t[i-1] + 1; } } //从右向左扫描, 保证当前比后一个多 for(int i = n-2;i >= 0;i--) { //如果第i个的小孩的权值比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1。 if(ratings[i] > ratings[i+1] && t[i] <= t[i+1]) { t[i] = t[i+1] + 1; } } for (int i = 0; i < n; ++i) { res += t[i]; } return res; } };
相关文章推荐
- Leetcode: Candy
- leetcode 135 —— Candy
- [leetcode-135]Candy(java)
- 【LeetCode candy】
- candy(LeetCode)
- LeetCode:Candy
- LeetCode2.1.22 (Candy)
- LeetCode -- Candy
- Leetcode-candy
- leetcode---candy---dp
- [LeetCode] Candy
- LeetCode - Candy
- 【leetcode】 Candy (hard,pick one)
- LeetCode:Candy
- [LeetCode] Candy 分糖果问题
- Candy leetcode java
- [LeetCode] Candy
- [LeetCode] 135. candy
- leetcode之candy
- leetcode:Candy