370. Range Addition


做题历程:

  1. 本题应该做了不止1次了,本次大概耗时11分钟经过提示做出了

本题难度是一般的,但是不看Hint确实是想不到,但是看了Hint基本就跟看答案没啥区别,直接就得出答案了。。。本题的核心如Hint所说,就是:

  • 不需更新所有的值,只需要更新所有的拐点,然后每个值都可以根据上一个值得到

代码如下:

class Solution {
public:
    vector<int> getModifiedArray(int length, vector<vector<int>>& updates) {
        vector<int> res(length, 0);

        for (int i = 0; i < updates.size(); ++i) {
            res[updates[i][0]] += updates[i][2];
            if (updates[i][1] + 1 < length) {
                res[updates[i][1] + 1] -= updates[i][2];
            }
        }

        for (int i = 1; i < length; ++i) {
            res[i] += res[i-1];
        }
        return res;
    }
};

results matching ""

    No results matching ""