航班預訂統計 -- LeetCode -- 8.30
阿新 • • 發佈:2021-08-31
航班預計統計
蕪湖起飛 ! 差分陣列算是我給整明白了。。。。
這個題等我學完線段樹,再重新回來看;
這裡有n
個航班,它們分別從1
到n
進行編號。
有一份航班預訂表bookings
,表中第i
條預訂記錄bookings[i] = [firsti, lasti, seatsi]
意味著在從firsti
到lasti
(包含firsti
和lasti
)的每個航班上預訂了seatsi
個座位。
請你返回一個長度為n
的陣列answer
,其中answer[i]
是航班i
上預訂的座位總數。
示例 1:
輸入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5 輸出:[10,55,45,25,25] 解釋: 航班編號 1 2 3 4 5 預訂記錄 1 : 10 10 預訂記錄 2 : 20 20 預訂記錄 3 : 25 25 25 25 總座位數: 10 55 45 25 25 因此,answer = [10,55,45,25,25]
示例 2:
輸入:bookings = [[1,2,10],[2,2,15]], n = 2 輸出:[10,25] 解釋: 航班編號 1 2 預訂記錄 1 : 10 10 預訂記錄 2 : 15 總座位數: 10 25 因此,answer = [10,25]
直接貼程式碼了:
class Solution { public: vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) { vector<int> a; for(int i = 0; i <= n + 1; i++){ a.push_back(0); } for(int i = 0; i < bookings.size(); i++){ int x = bookings[i][0]; int y = bookings[i][1]; a[x] += bookings[i][2]; a[y + 1] -= bookings[i][2]; } for(int i = 1; i <= n + 1; i++){ a[i] += a[i - 1]; } a.erase(a.begin()); a.pop_back(); return a; } };