Leetcode刷题100天—1109. 航班预订统计(数组)—day24
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—1109. 航班预订统计(数组)—day24相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
今天学到了新技能分差
1109. 航班预订统计
难度中等221收藏分享切换为英文接收动态反馈
这里有 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]
提示:
1 <= n <= 2 * 104
1 <= bookings.length <= 2 * 104
bookings[i].length == 3
1 <= firsti <= lasti <= n
1 <= seatsi <= 104
package 数组;
/*
* https://leetcode-cn.com/problems/corporate-flight-bookings/
*/
public class _1109_航班预订统计 {
// 求一个区间的增量叠加,可以用差分的方法
public int[] corpFlightBookings(int[][] bookings, int n) {
// 定义一个数组
int[] res=new int[n];
// 通过for循环遍历二维数组
for(int[] booking:bookings) {
// 将区间开头的编号预定记录存入
res[booking[0]-1]+=booking[2];
// 如果该数组最后的区间小于n,那么说明还没有到最大,并且该区间没有booking[2]这个元素值,那么减去就行了
if (booking[1]<n) {
res[booking[1]]-=booking[2];
}
}
/*
解释:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
数组编号 : 0 1 2 3 4
第一数组 : 10 -10
第二数组 : 20 -20
第三数组 : 25 0
因此,res = [10,45,-10,-20,0]
*/
// 遍历完成后,在遍历相邻的两个数求分差就可以直到结果了
for(int i=1;i<n;i++) {
// 后一个数加上前一个数
res[i]+=res[i-1];
}
/*
数组编号 : 0 1 2 3 4
第一:res = [10,55,-10,-20,0]
第二:res = [10,55,45,-20,0]
第三:res = [10,55,45,25,0]
第四:res = [10,55,45,25,25]
*/
return res;
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—1109. 航班预订统计(数组)—day24的主要内容,如果未能解决你的问题,请参考以下文章
C++&Python描述 LeetCode 1109. 航班预订统计
LeetCode 1109. 航班预订统计(差分数组基于差分的树状数组)/ 165. 比较版本号 / 剑指 Offer 22. 链表中倒数第k个节点