1109. 航班預訂統計(數組)

這裏有 n 個航班,它們分別從 1 到 n 進行編號。數組

咱們這兒有一份航班預訂表,表中第 i 條預訂記錄 bookings[i] = [i, j, k] 意味着咱們在從 i 到 j 的每一個航班上預訂了 k 個座位。spa

請你返回一個長度爲 n 的數組 answer,按航班編號順序返回每一個航班上預訂的座位數。code

 

示例:blog

輸入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
輸出:[10,55,45,25,25]

 

提示:內存

  • 1 <= bookings.length <= 20000
  • 1 <= bookings[i][0] <= bookings[i][1] <= n <= 20000
  • 1 <= bookings[i][2] <= 10000

 

/**
 * @param {number[][]} bookings
 * @param {number} n
 * @return {number[]}
 */
/*
// 20000個航班就不行了
var corpFlightBookings = function(bookings, n) {
    let res =[];
    let sum = 0;
    for(let i=1; i<=n; i++){
        sum = 0;
        for(let j=0; j<bookings.length; j++){
            if(i>=bookings[j][0] && i<=bookings[j][1]){
                sum += bookings[j][2];
            }
        }
        res.push(sum);
    }
    return res;
};
*/


var corpFlightBookings = function(bookings, n) {
    const res = Array(n).fill(0)
    bookings.forEach(v => {
        // v[1]-v[0] 必然是小於等於20000的
        for (let i = v[0]; i <= v[1]; i++) {
            res[i - 1] += v[2]
        }
    })
    return res
};

我的理解:io

以前的寫法會內存溢出,能夠考慮每一個條記錄的前兩個元素正是某個區域的航班,必然小於n個航班;由原來的push操做,直接變爲賦值操做。function

相關文章
相關標籤/搜索