leetcode 135. 分发糖果

92 阅读1分钟

c++

class Solution {
public:
    int candy(vector<int>& ratings) {
        vector<int> l(ratings.size()), r(ratings.size());
        for (int i = 0, j = 1; i < ratings.size(); i++) {
            if (i && ratings[i] > ratings[i - 1]) j += 1;
            else j = 1;
            l[i] = j;
        }
        for (int i = ratings.size() - 1, j = 1; i >= 0; i--) {
            if (i < ratings.size() - 1 && ratings[i] > ratings[i + 1]) j += 1;
            else j = 1;
            r[i] = j;
        }
        int ans = 0;
        for (int i = 0; i < ratings.size(); i++) ans += max(l[i], r[i]);
        return ans;
    }
};

js

var candy = function(ratings) {
    var l = new Array(ratings.length).fill(0);
    var r = new Array(ratings.length).fill(0);
    for (var i = 0, j = 1; i < ratings.length; i++) {
        if (i && ratings[i] > ratings[i - 1]) j += 1;
        else j = 1;
        l[i] = j;
    }
    for (var i = ratings.length - 1, j = 1; i >= 0; i--) {
        if (i < ratings.length - 1 && ratings[i] > ratings[i + 1]) j += 1;
        else j = 1;
        r[i] = j;
    }
    var ans = 0;
    for (var i = 0; i < ratings.length; i++) ans += Math.max(l[i], r[i]);
    return ans;
};