栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode 1094. 拼车(median)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 1094. 拼车(median)

题目 LeetCode 1094. 拼车(median)

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

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

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

示例 1:

输入:trips = [[2,1,5],[3,3,7]], capacity = 4
输出:false

示例 2:

输入:trips = [[2,1,5],[3,3,7]], capacity = 5
输出:true

提示:

  • 1 <= trips.length <= 1000
  • trips[i].length == 3
  • 1 <= numPassengersi <= 100
  • 0 <= fromi < toi <= 1000
  • 1 <= capacity <= 105
解题思路
  • 这里只要保证整个行车过程中不会超载就可以啦~

  • 使用一个map保存每个时间点对应的人数变化量,由于map自动排序,故第二次遍历时就是按照时间由小到大进行的

  • 再次遍历map的过程中,每次让capacity(剩余容量)根据所保存的信息进行变化,如果出现capacity < 0(即超载),那么返回false

图示
  • 不满足条件的情况

  • 满足条件的情况

代码(C++实现)
class Solution {
public:
    bool carPooling(vector>& trips, int capacity) {
        map mp;
        for (auto& vec : trips) {
            mp[vec[1]] -= vec[0];
            mp[vec[2]] += vec[0];
        }
        for (auto& p : mp) {
            capacity += p.second;
            if (capacity < 0)
                return false;
        }
        return true;
    }
};

有收获的话,求个赞~ Click Here

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/car-pooling/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号