LeetCode - 1109 - 航班预定统计
目录
题目来源
题目描述
示例
提示
题目解析
算法源码
题目来源
1109. 航班预订统计 - 力扣(LeetCode)
题目描述
这里有 n 个航班,它们分别从 1 到 n 进行编号。
有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。
请你返回一个长度为 n 的数组 answer,里面的元素是每个航班预定的座位总数。
示例
输入 | 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] |
输入 | 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
题目解析
本题如果用暴力求解的话,即双重for,外层遍历bookings,内层遍历bookings[i],
bookings[i][0]代表一个起始航班,bookings[i][1]代表一个终点航班,bookings[i][2]代表一个航班预定座位数
预先定义一个航班座位数组arr,arr[k]表示k航班预定的座位数。
在内层遍历中,再定义一个for循环,遍历bookings[i][0]~bookings[i][1]的每一个航班k,给对应的arr[k] += bookings[i][2]即可。
这个算法时间复杂度是 O(n^3),在本题数量级来看是超时的。
而本题其实是典型的为给定区间所有元素加上一个增量,可以利用差分数列求解。关于差分数列,请看:
算法设计 - 前缀和 & 差分数列_伏城之外的博客-CSDN博客
Java算法源码
class Solution {public int[] corpFlightBookings(int[][] bookings, int n) {int[] diff = new int[n];for(int i=0; i<bookings.length; i++) {int start = bookings[i][0];int end = bookings[i][1];int add = bookings[i][2];diff[start - 1] += add;if(end < n) diff[end] -= add;}int[] ans = new int[n];ans[0] = diff[0];for(int i=1; i<n; i++) {ans[i] = ans[i-1] + diff[i];}return ans;}
}
LeetCode - 1109 - 航班预定统计相关推荐
- Leetcode 1109.航班预定统计 差分
思路: 这道题假如要用暴力的方法,是过不去的.要使用差分的思想,创建一个差数组.因为本道题初始的座位数是0,直接建立一个全0数组即可. 参考代码: class Solution {public:vec ...
- C++Python描述 LeetCode 1109. 航班预订统计
C++&Python描述 LeetCode 1109. 航班预订统计 大家好,我是亓官劼(qí guān jié ),在公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...
- LeetCode.1109. 航班预订统计
LeetCode.1109. 航班预订统计 难度:medium 思路: 差分数组,注意细节 diff[0] = nums[0]; 代码: class Solution {public int[] c ...
- LeetCode 1109. 航班预订统计
1109. 航班预订统计 [差分+前缀和] class Solution {// 差分+前缀和 3:47. 4public int[] corpFlightBookings(int[][] booki ...
- LeetCode 1109. 航班预订统计(差分思想)
1. 题目 这里有 n 个航班,它们分别从 1 到 n 进行编号. 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个 ...
- 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 ...
- 1109. 航班预订统计
1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...
最新文章
- 悉尼大学计算机研究生学制,悉尼大学研究生学制
- DW php创建站点
- 开发中内存溢出问题及解决
- Hibernate中两种获取Session的方式
- java.util.date转化成java.sql.date
- html 判断是苹果几个版本号,这是我第一次遇到判断ios系统版本的问题
- SAP 电商云 Spartacus UI 的 proxy facade 是如何调用实际实现类
- 转: RSA原理 阮一峰的博客
- java enum 泛型,Java Enum作为Enum中的泛型类型
- TensorFlow2.0:误差计算
- [转]35岁前程序员要规划好的四件事,健康居首位
- 多人在线答题游戏 小程序 (规划设计方案)
- 【算法】排序_直接插入排序及其 优化(希尔排序)
- android 获取声音资源,Android从视频中提取出音频
- POP3 SMTP 协议分析学习笔记
- CentOS自动同步互联网服务器时间
- linux开机到登陆的流程图,Linux开机自动登录root,并启动应用程序
- 万马爱充工商变更:李刚任法定代表人、总经理,曾为特来电副总裁
- 导航上显示某个地点已关闭什么意思_你的手机地图APP只用来导航?这些隐藏功能不用就太可惜了!...
- 基础排序算法----归并排序
热门文章
- QQ五笔,切换中英文时,输出已输入的英文
- Linux---网络部分
- 林崇德《发展心理学》第三版笔记和课后答案
- arctime必须要java_更新MacOS catalina 后,arctime 无法使用,因为Java版本无法配适,怎么解决?...
- 常见问题解决 V8.3.5升级出现未知错误
- [附源码]JSP+ssm计算机毕业设计创业项目中游戏直播代练平台ubw4t【源码、数据库、LW、部署】
- JAVA练习89-把数字翻译成字符串
- Linux DNS原理简介及基本配置文件
- Python手工实现朴素贝叶斯分类及预测
- vivo新系统originos和鸿蒙,vivo发布新系统“Origin OS”,这三批机型支持升级,你期待吗?...