[M差分] lc1109. 航班预订统计(差分+水题)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[M差分] lc1109. 航班预订统计(差分+水题)相关的知识,希望对你有一定的参考价值。
1. 题目来源
链接:1109. 航班预订统计
2. 题目解析
差分即可,没啥意思。可以特判第 n
位的情况,省去数组 res
的空间开销。元素从 1 开始,-1 映射到从 0 开始即可。
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( n ) O(n) O(n)
class Solution {
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
vector<int> f(n + 1);
for (auto book : bookings) f[book[0] - 1] += book[2], f[book[1]] -= book[2];
for (int i = 1; i <= n; i ++ ) f[i] += f[i - 1];
vector<int> res(n);
for (int i = 0; i < n; i ++ ) res[i] = f[i];
return res;
}
};
特判
class Solution {
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
vector<int> f(n);
for (auto book : bookings) {
int l = book[0], r = book[1] + 1, w = book[2];
f[l - 1] += w;
if (r - 1 < n) f[r - 1] -= w;
}
for (int i = 1; i < n; i ++ ) f[i] += f[i - 1];
return f;
}
};
以上是关于[M差分] lc1109. 航班预订统计(差分+水题)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1109. 航班预订统计(差分数组基于差分的树状数组)/ 165. 比较版本号 / 剑指 Offer 22. 链表中倒数第k个节点