Candy
来源:互联网 发布:淘宝刷在线人数 编辑:程序博客网 时间:2024/06/06 03:03
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?
思路:
1.从左到右扫描,波谷为1,然后依次加1到波峰,再到波谷又是1.这样就能够保证,rating高的比左边rating低的糖果都要多。
2.从右到左扫描,同上。因为之前已经算过了依次,对于每个孩子要取candy[i]的最大,才能同时满足两个条件。
3,另外还要保证每个小孩都至少有一个糖果。
class Solution{public:static vector<int> candy(vector<int>&ratings){const int n = ratings.size();vector<int> candy(n);//从左向右扫描,遇到波谷设置为1,往波峰逐渐加1,到波谷有设置为1.这样保证,每rating高的要比rating低的糖果多。for(int i=1,incr=1;i<n;i++){if (ratings[i] > ratings[i-1])candy[i] = max(incr++,candy[i]);elseincr = 1;}//从右向左扫描。因为之前已经算过了依次,对于每个孩子要取candy[i]的最大,才能同时满足两个条件。for(int i = n-2,incr=1;i>=0;i--){if(ratings[i] > ratings[i+1])candy[i] = max(incr++,candy[i]);elseincr = 1;}//上面candy结果计算了步长。对于谷底无论从左还是从右,candy都不会赋值,会是0。因为每个小孩至少一个,所以需要加1。for(int i=0;i<candy.size();i++)candy[i]+=1;return candy;//计算糖果的总和//for(int i =0;i < n;i++)//{//sum += candy[i];//}//return sum;}};
0 0
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- candy
- Candy
- Candy
- Candy
- Candy
- MVC4 绑定下拉框,编辑时绑定值
- 从零开始编写自己的JavaScript框架(一)
- 《互联网时代》
- ghost还原出错 总是出现Not enough room on target partition
- C++Builder对C++的扩展
- Candy
- automotive strategy market plan
- MYSQL外键(Foreign Key)的使用
- Cocos2D-X设计模式: 组合模式
- 自定义多层级连网页右键
- js获取屏幕以及网页等宽度和高度
- 在宏定义中如何使用一个外部文件的的值来决定宏定义
- Struts2的灵魂——Interceptor
- 多线程编程1-----ThreadLocal