LeetCode每日一题 | LeetCode-1094.拼车

LeetCode-1094.拼车

题目描述

原题链接

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

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

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

问题分析

由于车的位置范围为[0, 1000]。因此,我们可以使用一个长度为 1000 的数组来记录每个位置的乘客数量。

先遍历trips数组,利用差分数组的思想,修改某段区间。即若有 c 个乘客在 a 点上车,在 b 点下车,要对区间[a, b)整体进行加 c 的操作,利用差分数组只需要进行nums[a] += c和nums[b] -= c操作即可。

求完差分数组后,对差分数组进行前缀和计算,就可以得到每个站点的乘客数量,与车的最大容量进行比较便可得到最终答案。

程序代码

cpp 复制代码
class Solution {
public:
    bool carPooling(vector<vector<int>>& trips, int capacity) {
        vector<int> nums(1010, 0);
        for(auto t : trips) {
            nums[t[1]+1] += t[0];
            nums[t[2]+1] -= t[0];
        }

        for(int i = 1; i <= 1000; i++) {
            nums[i] += nums[i-1];
            if(nums[i] > capacity)  return false;
        }

        return true;
    }
};
相关推荐
朝朝辞暮i13 分钟前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i1 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
ychqsq1 小时前
207.炸酱面
经验分享·职场和发展
Godspeed Zhao1 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
可乐ea1 小时前
Agent 模型分级升级路由:用置信度阈值把贵模型省下来
人工智能·算法·机器学习·结构化输出·置信度路由·模型升级路由·大模型成本优化
Navigator_Z2 小时前
LeetCode //C - 1278. Palindrome Partitioning III
c语言·算法·leetcode
Godspeed Zhao2 小时前
现代智能雷达技术18——算法(4)
算法
CHEEVEN_QY2 小时前
液冷板热阻计算与流阻优化的实战方法
人工智能·算法·机器学习
C++ 老炮儿的技术栈3 小时前
不一样的数值交换
数据结构·c++·人工智能·算法·c·csdn开发云
hahaha60164 小时前
Shades-of-Gray (SoG) 算法--白平衡算法
人工智能·嵌入式硬件·算法·计算机视觉