leetcode-1109. 航班预订统计(C++|差分)
链接:https://leetcode-cn.com/problems/corporate-flight-bookings/
题目内容
这里有 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
果果念
好像是第一次接触差分的思想,感觉很巧妙,算法也很巧妙。我接触这道题目时,暴力求解即O(N*N)肯定会超时的。算法的优化在于不需要重复累加每个元素,只需要过一遍就可以。
差分:后面的数减去前面的数即为差分,利用这条性质巧妙地记录了区间的范围。对于本题,需要注意的是,开始的航班号应该增,结束的航班号+1应该是减去这个区间对应的值。最后,标记好所有的区间之后,一边便利所有的标记数组即可。sumSeat[i]=sumSeat[i-1]+book[i]
进一步专业解释:
差分数组对应的概念是前缀和数组,对于数组 [1,2,2,4][1,2,2,4],其差分数组为 [1,1,0,2][1,1,0,2],差分数组的第 i个数即为原数组的第 i−1 个元素和第 i 个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组。
差分数组的性质是,当我们希望对原数组的某一个区间 [l,r]施加一个增量inc 时,差分数组 d 对应的改变是:d[l]增加 inc,d[r+1] 减少inc。这样对于区间的修改就变为了对于两个位置的修改。并且这种修改是可以叠加的,即当我们多次对原数组的不同区间施加不同的增量,我们只要按规则修改差分数组即可。
链接:https://leetcode-cn.com/problems/corporate-flight-bookings/solution/hang-ban-yu-ding-tong-ji-by-leetcode-sol-5pv8/
ps:vector可以利用函数pop_back()移除末尾元素,当时没有想出来~
代码
class Solution {
public:vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {vector<int> bookSeats(n+1,0);//差分,将双重循环优化到一重,时间复杂度降为O(N);for(int i=0;i<bookings.size();i++){bookSeats[bookings[i][0]-1]+=bookings[i][2];//开始索引bookSeats[bookings[i][1]]-=bookings[i][2];//结束索引}bookSeats.pop_back();for(int i=1;i<n;i++){bookSeats[i]=bookSeats[i-1]+bookSeats[i];}return bookSeats;}
};
leetcode-1109. 航班预订统计(C++|差分)相关推荐
- LeetCode 1109. 航班预订统计(差分思想)
1. 题目 这里有 n 个航班,它们分别从 1 到 n 进行编号. 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个 ...
- LeetCode.1109. 航班预订统计
LeetCode.1109. 航班预订统计 难度:medium 思路: 差分数组,注意细节 diff[0] = nums[0]; 代码: class Solution {public int[] c ...
- C++Python描述 LeetCode 1109. 航班预订统计
C++&Python描述 LeetCode 1109. 航班预订统计 大家好,我是亓官劼(qí guān jié ),在公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...
- LeetCode 1109. 航班预订统计
1109. 航班预订统计 [差分+前缀和] class Solution {// 差分+前缀和 3:47. 4public int[] corpFlightBookings(int[][] booki ...
- leetcode 1109. 航班预订统计(C++、python)
这里有 n 个航班,它们分别从 1 到 n 进行编号. 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 ...
- 模拟卷Leetcode【普通】1109. 航班预订统计
1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...
- 【1109. 航班预订统计】
leetcode力扣刷题打卡 题目:1109. 航班预订统计 描述:这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 booking ...
- LeetCode - 1109 - 航班预定统计
目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1109. 航班预订统计 - 力扣(LeetCode) 题目描述 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班 ...
- 1109. 航班预订统计
1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...
- LeetCode 力扣 算法题解 1109. 航班预订统计(Corporate Flight Bookings) n 个航班,它们分别从 1 到 n 进行编号,请返回每个航班预定的座位总数。
文章目录 一.题目描述 示例 1: 示例 2: 提示: 二.Python解题 1.Python代码展示 2.程序逻辑解释 3.复杂度分析 官方解释 三.测试反思 1.历史提交记录 2.提交失败记录 3 ...
最新文章
- PCIE4.0 简单介绍
- 2D图片3秒变立体,变换视角流畅自然:Adobe实习生的智能景深算法,登上顶级期刊...
- 转载--web前端工程化
- Python基础:02数字
- Eclipse如何提高开发效率
- Vue项目构建后通过Nginx/SpringBoot/Express/Egg发布
- mysql 主键互换_MySQL-什么方法可以快速的交换两条记录的ID?
- 单链表的基础操作练习
- [傅里叶变换及其应用学习笔记] 十. 卷积与中心极限定理
- Linux 各种压缩类型文件 解压命令 整理 tar.bz2 tar.gz tgz等等
- 时间操作(Java版)—获取给定时间与当前系统时间的差值(以毫秒为单位)
- delphi 多个线程 多个进度条_Python 进阶知识全篇-多线程
- VC++进行ActiveX控件的开发
- 花3150本钱拉一车菠萝,在马路边摆摊卖水果,卖7天收入4170
- Java学习笔记:IDEA快捷方式的图标问题
- SpringBoot实现QQ邮箱注册和登录
- 87: 企业监控系统部署 、 搭建Harbor私有仓库 、 总结和答疑
- 利用Amazon Lambda实现Amazon IoT设备证书的即时注册
- 编写强力黑白棋的历程
- python 用爬虫写网页测试
热门文章
- 要想成为一名真正的程序员,有哪些要求呢
- STM32超低功耗进阶之RTC
- Matlab工具箱之-------LMI系统工具箱
- 百度地图开发(二)——开发前的准备(密钥的申请)
- linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包(示例代码)...
- summer 2014 校队训练 嗷嗷待补之题
- 那些优秀的程序员都在看哪些书?
- openpyxl对execl文件中图片编辑
- AI模型各种存储格式文件介绍(pb, onnx, ckpt, tflite, h5)
- 怎么对document.write写出来的内容调整对齐方式_干不过写PPT的?麦肯锡老阿姨教你4招...