航班预订统计 -- LeetCode -- 8.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;
    }
};

  

posted @ 2021-08-31 10:17  荣荣荣荣荣荣  阅读(49)  评论(0)    收藏  举报