LeetCode-Candy-分糖果-逻辑关系

https://oj.leetcode.com/problems/candy/

两遍扫面,第一遍保证ci与ci-1的关系能够保证满足分数大小。第二遍保证ci与ci+1关系能够保证。注意顺序一定要是比较当前与上次更新过的结果。不能由于本次的更新影响以后不会扫描的结果。

class Solution {
public:
    int n,m;
    vector <int> r;
    vector <int> c;
    int candy(vector<int> &ratings) {
        n=ratings.size();
        r=ratings;
        c.resize(n,1);
        for (int i=1;i<n;i++) {
            if(r[i]>r[i-1] && c[i]<=c[i-1]) c[i]=c[i-1]+1;
        }
        for (int i=n-2;i>=0;i--) {
            if(r[i]>r[i+1] && c[i]<=c[i+1]) c[i]=c[i+1]+1;
        }
        return accumulate(c.begin(),c.end(),0);
    }
};

 

posted @ 2014-10-16 22:21  zombies  阅读(111)  评论(0编辑  收藏  举报