LeetCode 1109. 航班预订统计
1109. 航班预订统计
【差分+前缀和】
class Solution {// 差分+前缀和 3:47. 4public int[] corpFlightBookings(int[][] bookings, int n) {int[] pre = new int[n + 1];for(var k: bookings){pre[k[0] - 1] += k[2];pre[k[1]] -= k[2];}int[] ans = new int[n];for(var i = 0; i < n; i++){if(i == 0) ans[i] = pre[i];else ans[i] = pre[i] + ans[i - 1];}return ans;}
}
【差分+树状数组】
这里简单分析一下,树状数组是用来求前缀和的,如果把差分(新增变化量,末尾减少量)存在树状数组中,就可以直接查询前缀和了。
class Solution {// 差分+树状数组 3:53 6int[] tree;int n;int lowbit(int x){return x & -x;}void add(int x, int val){while(x <= n){tree[x] += val;x += lowbit(x);}}int ask(int x){int ret = 0;while(x > 0){ret += tree[x];x -= lowbit(x);}return ret;}public int[] corpFlightBookings(int[][] bookings, int n) {this.n = n;tree = new int[n + 2];for(var b: bookings){add(b[0], b[2]);add(b[1] + 1, -b[2]);}int[] ans = new int[n];for(var i = 0; i < n; i++){ans[i] = ask(i + 1);}return ans;}
}
【差分+线段树】
class Solution {// 差分+线段树 4:02 42int[] f, a;int n;void build(int k, int l, int r){if(l == r) f[k] = a[l - 1];else{int mid = (l + r) >>> 1;k <<= 1;build(k, l, mid);build(k, mid + 1, r);f[k >>> 1] = f[k] + f[k + 1];}}void add(int k, int l, int r, int x, int y){f[k] += y;if(l == r) return ;int mid = (l + r) >>> 1;k <<= 1;if(x > mid) add(k + 1, mid + 1, r, x, y);else add(k, l, mid, x, y);}int ask(int k, int l, int r, int x, int y){if(l == r) return f[k];else if(l == x && r == y) return f[k];int mid = (l + r) >>> 1;k <<= 1;if(x > mid) return ask(k + 1, mid + 1, r, x, y);if(y <= mid) return ask(k, l, mid, x, y);return ask(k, l, mid, x, mid) + ask(k + 1, mid + 1, r, mid + 1, y);}public int[] corpFlightBookings(int[][] bookings, int n) {int m = n + 1;f = new int[m * 4 + 1];for(var b: bookings){add(1, 1, m, b[0], b[2]);add(1, 1, m, b[1] + 1, -b[2]);}int[] ans = new int[n];for(var i = 0; i < n; i++){ans[i] = ask(1, 1, m, 1, i + 1);}return ans;}
}
LeetCode 1109. 航班预订统计相关推荐
- 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. 航班预订统计(差分思想)
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 ...
- 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 ...
最新文章
- 使用span标签为文字设置单独样式
- 第一讲 无穷级数的概念
- 分享一次 Java 内存泄漏的排查
- easyui datagrid不是相邻的能合并单元格吗_介绍一种划分账龄的方法,要不了半个小时就能完成...
- 44 | 套路篇:网络性能优化的几个思路(下)
- SAP WebIDE:how to enable context API reference
- 计算机社团竞选优势6,社团社长竞选稿六篇
- frame框架 超链接
- 使用 Spring Validation 优雅地进行参数校验
- 洛谷——P1876 开灯
- python初学者怎么入门-python初学者怎么入门
- Java中的关键字--volatile
- Python在指定文件夹生成随机文件
- acunetix导出html,关于Acunetix v11 WebUI下不得不说的事情!
- c语言旋转led时钟设计报告,《基于单片机的LED旋转时钟设计报告》.doc
- 如何提高测试用例评审效率?
- 云端是一个软件平台,拥有丰富的资源。在云端使用软件,无需安装,一点,下载,直接使用。
- 【无法关闭的网页】HTML网页源码分享#无法拒绝的表白源码
- Lumen企业站内容管理实战 - 欢迎页面
- 辩证法中包括一个关系、两大特征、三大规律、四种方法、五对范畴