题目
思考警戒线
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解答
分析思路
提示中已知总路程000,那么不妨定义一个数组arr[1001]用来保存每一公里车上此时的人数
(1001是因为数组结尾多一个'\0)
每公里车上人数等于上一公里车上总人数+该公里上车人数-该公里下车人数
统计完后遍历数组,若在哪一公里车上人数大于能乘坐总人数capacity,则return false
代码
bool carPooling(int** trips, int tripsSize, int* tripsColSize, int capacity) {
int arr[1001]={0};
int num=0;
for(int i=0;i<tripsSize;i++)
{
arr[trips[i][1]]+=trips[i][0];//+上车人数
arr[trips[i][2]] -= trips[i][0];//-下车人数
}
for(int i=0;i<1001;i++)
{
num+=arr[i];
if(num>capacity)
return false;
}
return true;
}
总结
做完这题感觉和之前统计一个字符串中英文字母出现次数解法有点像(创建大小为26的数组保存26个单词,遍历字符串,出现哪个单词哪个地方就++)