zoukankan      html  css  js  c++  java
  • LeetCode "Candy"

    Main reference: http://zhaohongze.com/wordpress/2013/12/10/leetcode-candy/

    I was confused by the constraint on BOTH sides of an element. Strategy is: splitting the 2 constraints into 2 single constraintm, so one linear scan from left, and the other linear scan from right.

    Algorithmic thought beats coding skills!

    class Solution {
    public:
        int candy(vector<int> &ratings) {
            vector<int> cnt(ratings.size(), 1);
    
            //    From left to right
            for (int i = 1; i < ratings.size(); i++)
                if (ratings[i - 1] < ratings[i]) cnt[i] = cnt[i - 1] + 1;
            
            //    From left to right
            for (int i = ratings.size() - 2; i >= 0; i--)
                if (ratings[i + 1] < ratings[i] && cnt[i] <= cnt[i + 1]) cnt[i] = cnt[i + 1] + 1;
            
            return std::accumulate(cnt.begin(), cnt.end(), 0);
        }
    };
  • 相关阅读:
    第十一周作业
    第十周作业
    第九周编程
    第十二周作业
    第十一周作业
    第十周作业
    第八周作业
    第七周作业
    第五周作业
    2019春季学期第四周作业
  • 原文地址:https://www.cnblogs.com/tonix/p/3914069.html
Copyright © 2011-2022 走看看