目录

题目来源

题目描述

示例

提示

题目解析

算法源码


题目来源

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 - 航班预定统计相关推荐

  1. Leetcode 1109.航班预定统计 差分

    思路: 这道题假如要用暴力的方法,是过不去的.要使用差分的思想,创建一个差数组.因为本道题初始的座位数是0,直接建立一个全0数组即可. 参考代码: class Solution {public:vec ...

  2. C++Python描述 LeetCode 1109. 航班预订统计

    C++&Python描述 LeetCode 1109. 航班预订统计   大家好,我是亓官劼(qí guān jié ),在公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些技 ...

  3. LeetCode.1109. 航班预订统计

    LeetCode.1109. 航班预订统计 难度:medium  思路: 差分数组,注意细节 diff[0] = nums[0]; 代码: class Solution {public int[] c ...

  4. LeetCode 1109. 航班预订统计

    1109. 航班预订统计 [差分+前缀和] class Solution {// 差分+前缀和 3:47. 4public int[] corpFlightBookings(int[][] booki ...

  5. LeetCode 1109. 航班预订统计(差分思想)

    1. 题目 这里有 n 个航班,它们分别从 1 到 n 进行编号. 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个 ...

  6. leetcode 1109. 航班预订统计(C++、python)

    这里有 n 个航班,它们分别从 1 到 n 进行编号. 我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 ...

  7. 模拟卷Leetcode【普通】1109. 航班预订统计

    1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...

  8. 【1109. 航班预订统计】

    leetcode力扣刷题打卡 题目:1109. 航班预订统计 描述:这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 booking ...

  9. 1109. 航班预订统计

    1109. 航班预订统计 这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti ...

最新文章

  1. 悉尼大学计算机研究生学制,悉尼大学研究生学制
  2. DW php创建站点
  3. 开发中内存溢出问题及解决
  4. Hibernate中两种获取Session的方式
  5. java.util.date转化成java.sql.date
  6. html 判断是苹果几个版本号,这是我第一次遇到判断ios系统版本的问题
  7. SAP 电商云 Spartacus UI 的 proxy facade 是如何调用实际实现类
  8. 转: RSA原理 阮一峰的博客
  9. java enum 泛型,Java Enum作为Enum中的泛型类型
  10. TensorFlow2.0:误差计算
  11. [转]35岁前程序员要规划好的四件事,健康居首位
  12. 多人在线答题游戏 小程序 (规划设计方案)
  13. 【算法】排序_直接插入排序及其 优化(希尔排序)
  14. android 获取声音资源,Android从视频中提取出音频
  15. POP3 SMTP 协议分析学习笔记
  16. CentOS自动同步互联网服务器时间
  17. linux开机到登陆的流程图,Linux开机自动登录root,并启动应用程序
  18. 万马爱充工商变更:李刚任法定代表人、总经理,曾为特来电副总裁
  19. 导航上显示某个地点已关闭什么意思_你的手机地图APP只用来导航?这些隐藏功能不用就太可惜了!...
  20. 基础排序算法----归并排序

热门文章

  1. QQ五笔,切换中英文时,输出已输入的英文
  2. Linux---网络部分
  3. 林崇德《发展心理学》第三版笔记和课后答案
  4. arctime必须要java_更新MacOS catalina 后,arctime 无法使用,因为Java版本无法配适,怎么解决?...
  5. 常见问题解决 V8.3.5升级出现未知错误
  6. [附源码]JSP+ssm计算机毕业设计创业项目中游戏直播代练平台ubw4t【源码、数据库、LW、部署】
  7. JAVA练习89-把数字翻译成字符串
  8. Linux DNS原理简介及基本配置文件
  9. Python手工实现朴素贝叶斯分类及预测
  10. vivo新系统originos和鸿蒙,vivo发布新系统“Origin OS”,这三批机型支持升级,你期待吗?...