LeetCode: Candy
2014-07-27 14:57
393 查看
思路:参照了网上讨论的结果,采用一个时间复杂度为O(n)的解法,把序列看成一个波形图,波谷位置一定是1,分两次扫描,第一次扫描的时候从左至右,碰到上升序列,candy数目依次相加,如果是下降趋势,先不管,等第二次扫描的时候再来求解。
code:
code:
class Solution { public: int candy(vector<int> &ratings) { int N = ratings.size(); int *candy = new int ; fill(candy,candy+N,1); int original = 2; for(int i = 0;i < N-1;i++) if(ratings[i+1] > ratings[i]) candy[i+1] = max(original++,candy[i+1]); else original = 2; original = 2; for(int i = N-1;i >= 1;i--) if(ratings[i-1] > ratings[i]) candy[i-1] = max(original++,candy[i-1]); else original = 2; int ret = 0; for(int i = 0;i<N;i++) ret += candy[i]; return ret; } };
相关文章推荐
- 【LeetCode练习题】Candy
- [LeetCode] Candy
- 【LeetCode笔记】Candy
- [leetcode] Candy Java
- LeetCode135 Candy
- leetcode-Candy
- [LeetCode] Candy
- leetcode题目:Candy
- Java for LeetCode 135 Candy
- LeetCode: Candy
- LeetCode 笔记25 Candy (艰难的调试)
- Leetcode:Candy
- #leetcode#Candy
- LeetCode: Candy 解题报告
- leetcode:Candy
- [Leetcode 135, Hard] Candy
- [LeetCode] Candy
- [LeetCode]Candy
- Leetcode_candy
- Candy [leetcode] O(n)时间复杂度,O(1)空间复杂度的方法