135. 分发糖果

Problem: 135. 分发糖果

Reference

https://leetcode.cn/problems/candy/solutions/17847/candy-cong-zuo-zhi-you-cong-you-zhi-zuo-qu-zui-da-/?envType=study-plan-v2&envId=top-interview-150

复杂度

时间复杂度:

添加时间复杂度, 示例: $O(n)$

空间复杂度:

添加空间复杂度, 示例: $O(n)$

Code

[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

class Solution {

public:

    int candy(vector<int>& ratings) {

        vector<int> left(ratings.size(), 1);

        vector<int> right(ratings.size(), 1);

        int count = 0;

        for (int i = 1; i < ratings.size(); i++) { // 左规则

            if (ratings[i] > ratings[i - 1]) {

                left[i] = left[i - 1] + 1;

            }

        }

        for (int i = ratings.size() - 2; i >= 0; i--) { // 右规则

            if (ratings[i] > ratings[i + 1]) {

                right[i] = right[i + 1] + 1;

            }

            count += std::max(left[i], right[i]);

            // std::cout << i;

            // std::cout << count;

            // std::cout << endl;

        }

        count += std::max(left[ratings.size()-1],right[ratings.size()-1]);

        // for (int i = 0; i < ratings.size(); i++) {

        //     std::cout << left[i];

        // }

        // std::cout << endl;

        // for (int i = 0; i < ratings.size(); i++) {

        //     std::cout << right[i];

        // }

        // std::cout << endl;

        return count;

    }

};