当题目给出的数据不是很大,需要快速求解数组区间的和,并且频繁的对数组内的值增加和减掉,可以考虑用差分数组来实现快速求区间值。
1094.拼车
Problem: 1094. 拼车
车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)
给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。
当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。
示例 1:
输入:trips = [[2,1,5],[3,3,7]], capacity = 4 输出:false
示例 2:
输入:trips = [[2,1,5],[3,3,7]], capacity = 5 输出:true
提示:
1 <= trips.length <= 1000trips[i].length == 31 <= numPassengersi <= 1000 <= fromi < toi <= 10001 <= capacity <= 105
思路
题目给出的数据不是很大,然后需要频繁对车站人数上车和下车,即频繁的增加和减掉,可以考虑用差分数组来实现。
解题方法
差分数组,题目给出车站从0-1000,那么只需计算经过每个站车上的人数,不需要管需不需要下车, 求出每个站在车上的人数,然后再循环比对每个车站的人数,如果超过限制人数,直接返回false。
复杂度
时间复杂度:
$O(n)$
空间复杂度:
$O(n)$
- Code
1 | class Solution { |