leetcode 17 Candy
2014-07-10 15:42
162 查看
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。
该算法时间复杂度为O(N)
这个题只要知道了模拟的方法,就比较简单了。
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。
该算法时间复杂度为O(N)
#include<iostream> #include<cstdio> #include<vector> using namespace std; int candy(vector<int> &ratings) { vector<int> count(ratings.size(),1); int i,len=count.size(); for(i=0;i<len;i++) { if(ratings[i+1]>ratings[i]&&count[i+1]<=count[i]) count[i+1]=count[i]+1; } for(i=len-1;i>=0;i--) { if(ratings[i-1]>ratings[i]&&count[i-1]<=count[i]) count[i-1]=count[i]+1; } int sum=0; for(i=0;i<len;i++) sum+=count[i]; return sum; } int main(int argc,char *argv[]) { freopen("input.txt","r",stdin); vector<int> v; int num,tmp; cin>>num; while(num--) { cin>>tmp; v.push_back(tmp); } cout<<candy(v)<<endl; return 0; }
这个题只要知道了模拟的方法,就比较简单了。
相关文章推荐
- LeetCode 17 Candy
- Leetcode -- Candy
- leetcode之-题17
- LeetCode 135 Candy
- Leetcode 17 Letter Combinations of a Phone Number
- 17. Letter Combinations of a Phone Number Leetcode Python
- [leetcode] Candy
- Leetcode: Candy
- [leetcode] Candy
- [Leetcode] #17 Letter Combinations of a Phone Number
- leetcode:greedy: Candy(135)
- LeetCode算法题目:Candy
- LeetCode 17 Letter Combinations of a Phone Number
- leetCode(17):Minimum/Maximize depth of binary tree 分类: leetCode 2015-06-21 16:05 146人阅读 评论(0) 收藏
- 算法分析与设计丨第十三周丨LeetCode(17)——Coin Change(Medium)
- Leetcode-Candy
- LeetCode (17)Letter Combinations of a Phone Number
- LeetCode | Candy
- LeetCode - Candy
- LeetCode - 17 - Letter Combinations of a Phone Number