[leetcode] Candy
2014-07-08 16:57
253 查看
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,从前往后扫描,如果第i个小孩等级比第i-1个高,那么i的糖数目等于i-1的糖数目+1;从后往前扫描,如果第i个的小孩的等级比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1。
大神参考链接:http://www.cnblogs.com/TenosDoIt/p/3389479.html
输入示例:
5
1 2 3 4 5
代码:
#include<iostream>
#include<vector>
using namespace std;
int candy(vector<int> &ratings){
vector<int> temp;
int len=ratings.size();
for(int i=0;i<len;i++){
temp.push_back(1);
}
for(int i=1;i<len;i++){
if(ratings[i]>ratings[i-1] ){
temp[i]=temp[i-1]+1;
}
}
for(int i=len-2;i>=0;i--){
if(ratings[i]>ratings[i+1] && temp[i]<=temp[i+1]){
temp[i]=temp[i+1]+1;
}
}
int res;
res=0;
for(int i=0;i<len;i++){
res+=temp[i];
}
return res;
}
int main(){
int n;
cin>>n;
vector<int> ratings;
int a;
for(int i=0;i<n;i++){
cin>>a;
ratings.push_back(a);
}
int res;
res=candy(ratings);
cout<<res<<endl;
return 0;
}
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,从前往后扫描,如果第i个小孩等级比第i-1个高,那么i的糖数目等于i-1的糖数目+1;从后往前扫描,如果第i个的小孩的等级比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1。
大神参考链接:http://www.cnblogs.com/TenosDoIt/p/3389479.html
输入示例:
5
1 2 3 4 5
代码:
#include<iostream>
#include<vector>
using namespace std;
int candy(vector<int> &ratings){
vector<int> temp;
int len=ratings.size();
for(int i=0;i<len;i++){
temp.push_back(1);
}
for(int i=1;i<len;i++){
if(ratings[i]>ratings[i-1] ){
temp[i]=temp[i-1]+1;
}
}
for(int i=len-2;i>=0;i--){
if(ratings[i]>ratings[i+1] && temp[i]<=temp[i+1]){
temp[i]=temp[i+1]+1;
}
}
int res;
res=0;
for(int i=0;i<len;i++){
res+=temp[i];
}
return res;
}
int main(){
int n;
cin>>n;
vector<int> ratings;
int a;
for(int i=0;i<n;i++){
cin>>a;
ratings.push_back(a);
}
int res;
res=candy(ratings);
cout<<res<<endl;
return 0;
}
相关文章推荐
- LeetCode:Candy
- Leetcode Candy
- LeetCode_Candy
- LeetCode139: Candy
- 【leetcode】Candy
- Leetcode 135 Candy
- LeetCode || Candy
- [leetcode]Candy @ Python
- [LeetCode]Candy
- 开始leetcode day9:Candy
- leetcode_Candy
- LeetCode:Candy
- 4.19 leetcode -19 candy
- LeetCode 135:candy 题解 Python
- leetcode :Candy
- 117_leetcode_Candy
- [LeetCode]Candy
- [LeetCode] Candy
- https://leetcode.com/problems/candy/
- Candy -- leetcode