JAVA练习203-航班预订统计
这里有 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 * 10^4
- 1 <= bookings.length <= 2 * 10^4
- bookings[i].length == 3
- 1 <= firsti <= lasti <= n
- 1 <= seatsi <= 10^4
分析:
方法1:朴素解法
直接遍历相加,没什么好说的。
时间复杂度:O(n*2) 最坏情况每次都遍历n次
空间复杂度:O(n)
class Solution {public int[] corpFlightBookings(int[][] bookings, int n) {//结果数组int[] res = new int[n];//遍历相加for(int[] booking: bookings){for(int i = booking[0]-1; i < booking[1]; ++i){res[i] += booking[2];}}return res;}
}
方法2:差分数组+前缀和
差分就是讲第一个索引加上目标值,最后一个索引+1 减去目标值,这样得到的数组再做前缀和就可以得到结果集。那 bookings = [[1,2,10],[2,3,20],[2,5,25]],举例:
- 航班编号 1 2 3 4 5
- 差分数组 1 : 10 0 -10 0 0
- 差分数组 2 : 10 20 -10 -20 0
- 差分数组 3 : 10 45 -10 -20 0 (-25)
- 求前缀和: 10 55 45 25 25
时间复杂度:O(m+n) m 为数组 bookings 的长度,n 为给定 n
空间复杂度:O(n)
class Solution {public int[] corpFlightBookings(int[][] bookings, int n) {//结果数组int[] res = new int[n];//差分for(int[] booking: bookings){res[booking[0]-1] += booking[2];if(booking[1] < n){res[booking[1]] -= booking[2];}}//前缀和for(int i = 1; i < n; ++i){res[i] += res[i-1];}return res;}
}
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/corporate-flight-bookings
JAVA练习203-航班预订统计相关推荐
- 【每日一题】航班预订统计
1109. 航班预订统计
- 1109. 航班预订统计
1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...
- LeetCode1109之航班预订统计(相关话题:差分数组)
题目描述 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi ...
- 模拟卷Leetcode【普通】1109. 航班预订统计
1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...
- 值得一刷系列,航班预订统计拼车
前言 前几天,有一哥们发我一个LeetCode题目链接,紧跟着附上了自己的提交记录,一个2ms,另一个1451ms- 我一看,这题有点意思啊,不同的思路竟然时间差这么多.搞它. 题目描述 这里有n个航 ...
- C++Python描述 LeetCode 1109. 航班预订统计
C++&Python描述 LeetCode 1109. 航班预订统计 大家好,我是亓官劼(qí guān jié ),在公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...
- 「每日一题」航班预订统计
这是 LeetCode 上2021-8-31的每日一题:「1109. 航班预订统计」 1. 题目描述 这里有n个航班,它们分别从1到n进行编号. 有一份航班预订表bookings,表中第i条预订记录b ...
- 【1109. 航班预订统计】
leetcode力扣刷题打卡 题目:1109. 航班预订统计 描述:这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 booking ...
- LeetCode 1109. 航班预订统计
1109. 航班预订统计 [差分+前缀和] class Solution {// 差分+前缀和 3:47. 4public int[] corpFlightBookings(int[][] booki ...
- LeetCode.1109. 航班预订统计
LeetCode.1109. 航班预订统计 难度:medium 思路: 差分数组,注意细节 diff[0] = nums[0]; 代码: class Solution {public int[] c ...
最新文章
- RHEL 5服务篇—部署DNS域名解析服务(一)BIND软件
- 'Push segues can only be used when the source controller is managed by an instance of UINavigationC
- python百度翻译包_python百度翻译移动端
- Bootstrap 环境安装
- net start mysql 发生系统错误2 系统找不到指定的文件
- 浙江省经信委与新华三签署战略合作协议
- 证明kruskal算法求解图的最小生成树具有贪心选择性质_将并查集应用在图论中的最小生成树算法——Kruskal...
- 平衡二叉树AVL删除
- 软件测试常见笔试面试题(一)
- DevExpress 创建EXCEL
- 基于Open XML 导出数据到Excel
- 装上WPS后导入Excel 的代码出错
- 原子哥家的 SIM800L透传模式配置
- 苹果手机 计算机 错误,苹果手机的计算器连1+2+3都算不对!原因太尴尬!
- 英语语法最终珍藏版笔记-8虚拟语气
- 可见光通信在室内定位及IoT上的应用展示
- 外星人入侵小游戏十二章十三章实现
- 扫雷游戏(基础版本)
- 刘鹏飞_2022_reStructured Pre-training
- MySQL 基础——MySQL 起步