码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Candy

时间:2014-06-26 20:46:27      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   get   

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

 1 class Solution {
 2 public:
 3     int candy(vector<int> &ratings) {
 4         int res = 0;
 5         int n = ratings.size();
 6         if (n == 0) {
 7             return res;
 8         }
 9         int *t = new int[n];
10         for (int i = 0; i < n; ++i) {
11             t[i] = 1;
12         }
13         //从左向右扫描  ,保证当前比前一个多
14         for (int i = 1; i < n; ++i) {
15             if (ratings[i] > ratings[i-1]) {
16                 t[i] = t[i-1] + 1;
17             }
18         }
19         //从右向左扫描, 保证当前比后一个多     
20         for(int i = n-2;i >= 0;i--)
21         {             
22             //如果第i个的小孩的权值比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1。             
23             if(ratings[i] > ratings[i+1] && t[i] <= t[i+1])
24             {                 
25                 t[i] = t[i+1] + 1;            
26             }      
27         }
28         for (int i = 0; i < n; ++i) {
29             res += t[i];
30         }
31         return res;
32     }
33 };

 

[LeetCode] Candy,布布扣,bubuko.com

[LeetCode] Candy

标签:style   class   blog   code   color   get   

原文地址:http://www.cnblogs.com/diegodu/p/3808242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!