题目
题目链接:https://leetcode-cn.com/problems/car-pooling/
题目解析:题目比较好理解,给一个二维数组,每一个数组里面放着三个数据,上车人数,上车地点,下车地点,此外路线是一条直线。
我一开始准备用暴力,但是发现越写越复杂就违背了贪心的思想。所以我还是去后面看看别人的思路,理解了一个思路。
将路程变成一个数组,然后将上车地点作为数组的索引,然后数组里面存放的是车上减少或者增加的座位。遍历完数组之后,开始遍历路程数组,然后中间有座位过多的化就返回false
代码
class Solution {
public boolean carPooling(int[][] trips, int capacity) {
//创建路程数组
int[] capacitylength = new int[1001];
//遍历数组,将车在每个地点的座位情况记录下来
for(int i=0;i<trips.length;i++) {
capacitylength[trips[i][1]] -= trips[i][0];
capacitylength[trips[i][2]] += trips[i][0];
}
//遍历路程数组,将座位情况放到座位上,一旦座位出现异常就返回false
for(int i=0;i<capacitylength.length;i++) {
capacity += capacitylength[i];
if(capacity<0)
return false;
}
return true;
}
}