思路:差分思想(当区间进行相加时,只需要记录凸点即可;如[1,2]区间+10,1位置+10,2位置不变只需要把1位置的数字加过来即可;而到3位置时,由于该位置没有进行加值,则需要把凹点记录即可)
vector<int> corpFlightBookings(vector<vector<int> >& bookings, int n) {
vector<int> res(n, 0);
//dp记录最后一个凹点,不需要返回res
vector<int> dp(n + 1, 0);
for (int i = 0; i < bookings.size(); i++) {
dp[bookings[i][0] - 1] += bookings[i][2];
dp[bookings[i][1]] -= bookings[i][2];
}
res[0] = dp[0];
for (int i = 1; i < n; i++) {
res[i] = dp[i] + res[i - 1];
}
return res;
}