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
思路:记录在每个地点时 车上总共需有的人数,然后遍历地点人数,与空座比较
代码中有详细注释,通俗易懂,保你看明白
举例: 负数表示这点没人上车,有下车 注意这里举例有些片面,没有重合点位,但是实际会有,如果不好理解,可以先看代码,然后自己找个重合地点的进行手推,帮助理解
举例 trips = [[2,1,5],[3,3,7]], capacity = 4peopels_index 0 1 2 3 4 5 6 7 peopels_data 0 2 0 3 0 -2 0 -3
code: 所有代码均有注释,保证一看就懂
class Solution(object):def carPooling(self, trips, capacity):""":type trips: List[List[int]]:type capacity: int:rtype: bool"""# peopel=[0 for _ in range(1001)]peopels=[0]*1001# 记录每个地点时车上人数 (由于初始化为0,这里就可直接按位置作为下标进行保存人数)for num,start,end in trips:# 上车peopels[start]+=num# 下车peopels[end]-=num# 遍历每个位置,看是否少于空座数for i in range(len(peopels)):# 由于位置不是连续的,为便于统计车上总人数,需要进行人数的传递"""举例 trips = [[2,1,5],[3,3,7]], capacity = 4peopels_index 0 1 2 3 4 5 6 7 peopels_data 0 2 0 3 0 -2 0 -3由于位置不连贯,故需要进行前面人数的传递peopels[i]+=peopels[i-1] (初始化为0,不会有影响)"""peopels[i]+=peopels[i-1]if peopels[i]>capacity:return Falsereturn True
眼过千遍,不如手敲一遍,大家共勉!!!