【题目描述】
这里有 n
个航班,它们分别从 1
到 n
进行编号。
有一份航班预订表 bookings
,表中第 i
条预订记录 bookings[i] = [firsti, lasti, seatsi]
意味着在从 firsti
到 lasti
(包含 firsti
和 lasti
)的 每个航班 上预订了 seatsi
个座位。
请你返回一个长度为 n
的数组 answer
,里面的元素是每个航班预定的座位总数。
https://leetcode.cn/problems/corporate-flight-bookings/
【示例】
【代码】admin
40 / 63 个通过的测试用例
最搓的思路, 这里有个问题就是如果数组是{[2,2,45], [2, 2, 30]} 此时输出[75, 0];但正确应该是[0, 75]
package com.company;
import java.util.*;
// 2023-04-23
class Solution {
public int[] corpFlightBookings(int[][] bookings, int n) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < bookings.length; i++){
int start = bookings[i][0];
int end = bookings[i][1];
int seats = bookings[i][2];
for (int j = start; j <= end; j++){
if (map.containsKey(j)){
map.put(j, map.get(j) + seats);
}else {
map.put(j, seats);
}
}
}
System.out.println(map);
int[] res = new int[n];
int idx = 0;
for (Integer value : map.values()) {
res[idx++] = value;
}
System.out.println(Arrays.toString(res));
return res;
}
}
public class Test {
public static void main(String[] args) {
new Solution().corpFlightBookings(new int[][]{{1,2,10},{2,3,20},{2,5,25}}, 5); // 输出:[10,55,45,25,25]
new Solution().corpFlightBookings(new int[][] {{1,2,10},{2,2,15}}, 2); // 输出:[10,25]
}
}