class Solution {
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
}
};
1109. 航班预订统计
这里有 n
个航班,它们分别从 1
到 n
进行编号。
有一份航班预订表 bookings
,表中第 i
条预订记录 bookings[i] = [firsti, lasti, seatsi]
意味着在从 firsti
到 lasti
(包含 firsti
和 lasti
)的 每个航班 上预订了 seatsi
个座位。
请你返回一个长度为 n
的数组 answer
,里面的元素是每个航班预定的座位总数。
示例 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]
提示:
1 <= n <= 2 * 104
1 <= bookings.length <= 2 * 104
bookings[i].length == 3
1 <= firsti <= lasti <= n
1 <= seatsi <= 104
原站题解
java 解法, 执行用时: 2 ms, 内存消耗: 55.7 MB, 提交时间: 2022-12-01 10:24:00
class Solution { public int[] corpFlightBookings(int[][] bookings, int n) { int[] nums = new int[n]; for (int[] booking : bookings) { nums[booking[0] - 1] += booking[2]; if (booking[1] < n) { nums[booking[1]] -= booking[2]; } } for (int i = 1; i < n; i++) { nums[i] += nums[i - 1]; } return nums; } }
golang 解法, 执行用时: 104 ms, 内存消耗: 8.9 MB, 提交时间: 2022-12-01 10:23:43
func corpFlightBookings(bookings [][]int, n int) []int { nums := make([]int, n) for _, booking := range bookings { nums[booking[0]-1] += booking[2] if booking[1] < n { nums[booking[1]] -= booking[2] } } for i := 1; i < n; i++ { nums[i] += nums[i-1] } return nums }
javascript 解法, 执行用时: 140 ms, 内存消耗: 62.9 MB, 提交时间: 2022-12-01 10:23:27
/** * @param {number[][]} bookings * @param {number} n * @return {number[]} */ var corpFlightBookings = function(bookings, n) { const nums = new Array(n).fill(0); for (const booking of bookings) { nums[booking[0] - 1] += booking[2]; if (booking[1] < n) { nums[booking[1]] -= booking[2]; } } for (let i = 1; i < n; i++) { nums[i] += nums[i - 1]; } return nums; };
python3 解法, 执行用时: 112 ms, 内存消耗: 25.6 MB, 提交时间: 2022-12-01 10:23:10
class Solution: def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]: nums = [0] * n for left, right, inc in bookings: nums[left - 1] += inc if right < n: nums[right] -= inc for i in range(1, n): nums[i] += nums[i - 1] return nums