- 航班预订统计
这里有 n 个航班,它们分别从 1 到 n 进行编号。
有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。
请你返回一个长度为 n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。
好难啊,这个题用的差分数组
class Solution {
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
vector<int>res(n,0);
vector<int>diff(n+1,0);
for(int k=0;k<bookings.size();k++){
int i=bookings[k][0]-1;
int j=bookings[k][1]-1;
int seat=bookings[k][2];
diff[i]=diff[i]+seat;
diff[j+1]=diff[j+1]-seat;
}
res[0]=diff[0];
for(int k=1;k<n;k++)
res[k]=res[k-1]+diff[k];
return res;
}
};
class Solution {
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
vector<int> v(n, 0);
int size = bookings.size();
for (int i = 0; i < size; i++) {
int first = bookings[i][0];
int last = bookings[i][1];
int seats = bookings[i][2];
for (int j = first; j <= last; j++) {
v[j-1] += seats;
}
}
return v;
}
};