• 前缀和 LeetCode1094 拼车


    1094. 拼车

    车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向

    给定整数 capacity 和一个数组 trips ,  trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。

    当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false

    • 1 <= trips.length <= 1000
    • trips[i].length == 3
    • 1 <= numPassengersi <= 100
    • 0 <= fromi < toi <= 1000
    • 1 <= capacity <= 105 

    当前人数是由当前上车人数-当前下车人数决定的。因为from和to小于1000,所以可以使用大小为1000的数组path,表示每个点上车和下车的人数之差。 默认为0.

    遍历trips:t

    path[t[1]]+=t[0];path[t[2]]-=t[0];

    然后对path求前缀和,如果前缀和大于最大容量,说明超载返回false.

    最后返回true。

    1. class Solution {
    2. public:
    3. bool carPooling(vectorint>>& trips, int capacity) {
    4. int path[1001];
    5. memset(path,0,sizeof(path));
    6. for(int i=0;isize();i++){
    7. vector<int>t=trips[i];
    8. path[t[1]]+=t[0];
    9. if(path[t[1]]>capacity)return false;
    10. path[t[2]]-=t[0];
    11. }
    12. int s=0;
    13. for(int i=0;i<1001;i++){
    14. s+=path[i];
    15. if(s>capacity)return false;
    16. }
    17. return true;
    18. }
    19. };

  • 相关阅读:
    Java多线程编程
    Ascend C算子开发(入门)章节小测
    【Redis高级篇】分片集群--并发
    快速部署stable diffusion@Ubuntu
    C++【红黑树】
    51单片机学习:步进电机实验
    尚硅谷-SpringMVC篇
    linux swap交换分区
    【Android】Binder的Oneway拦截
    每日一题 —— 图像渲染
  • 原文地址:https://blog.csdn.net/m0_52043808/article/details/134749149