✅ 差分数组
相关例题:
- 2848. 与车相交的点
 - 1094. 拼车
 - 1109. 航班预订统计
 - 2406. 将区间分为最少组数
 - 2381. 字母移位 II
 - 2772. 使数组中的所有元素都等于零
 - 2528. 最大化城市的最小电量
 
难点:如何快速地「把区间内的数都加一」呢?

2848. 与车相交的点(一维差分数组)
给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。
返回数轴上被车 任意部分 覆盖的整数点的数目。
示例 1:
1  | 输入:nums = [[3,6],[1,5],[4,7]]  | 
示例 2:
1  | 输入:nums = [[1,3],[5,8]]  | 
1️⃣ 差分数组
核心思路:计算每个点被覆盖了多少次。统计覆盖次数大于 0 的点,即为答案。
假设一开始有一个全为 0 的数组 a,用来保存每个点被覆盖了多少次。
对于示例 1,我们可以把 a 中下标在 [3,6] 的元素都加一,下标在 [1,5] 的元素都加一,下标在 [4,7] 的元素都加一。
然后,统计 a[i] > 0 的个数,即为答案。
如何快速地「把区间内的数都加一」呢?
- 这可以用差分数组实现。
 
1  | class Solution {  | 
1094. 拼车
车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)
给定整数 capacity 和一个数组 trips ,  trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。
当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。
示例 1:
1  | 输入:trips = [[2,1,5],[3,3,7]], capacity = 4  | 
示例 2:
1  | 输入:trips = [[2,1,5],[3,3,7]], capacity = 5  | 
1️⃣ 差分数组
1  | class Solution {  |