370. Range Addition
做题历程:
- 本题应该做了不止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;
}
};