首页 > 其他分享 >1094. 拼车(中)

1094. 拼车(中)

时间:2024-03-27 13:23:15浏览次数:26  
标签:1094 nums int self len 拼车 数组 diff

目录

题目

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

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

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

示例 1:

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

示例 2:

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

题解:差分数组

  • 分析:车站就是原始数组全部初始化为0,上车和下车就是数组的修改区间,上多少人,就是在这个区间加多少,最后返回结果数组,用最多人的时候和容量比较判断超载没有。
class Solution:
    class Difference:
    # 差分数组
        def __init__(self, nums: List[int]):
            assert len(nums) > 0
            self.diff = [0] * len(nums)
            # 根据初始数组构造差分数组
            self.diff[0] = nums[0]
            for i in range(1, len(nums)):
                self.diff[i] = nums[i] - nums[i - 1]
        # 给闭区间 [i, j] 增加 val(可以是负数)
        def increment(self, i: int, j: int, val: int) -> None:
            self.diff[i] += val
            if j + 1 < len(self.diff):
                self.diff[j + 1] -= val
        # 返回结果数组
        def result(self) -> List[int]:
            res = [0] * len(self.diff)
            # 根据差分数组构造结果数组
            res[0] = self.diff[0]
            for i in range(1, len(self.diff)):
                res[i] = res[i - 1] + self.diff[i]
            return res
            
    def carPooling(self, trips: List[List[int]], capacity: int) -> bool:
        nums=[0]*1001 # 最多有 1001 个车站
        df=Solution.Difference(nums)
        for item in trips:
            val,i,j=item[0],item[1],item[2]-1# 第 trip[2] 站乘客已经下车,即乘客在车上的区间是 [trip[1], trip[2] - 1]
            df.increment(i,j,val)
        result=df.result()
        if max(result[i] for i in range(len(result))) >capacity:
            return False
        return True

标签:1094,nums,int,self,len,拼车,数组,diff
From: https://www.cnblogs.com/lushuang55/p/18098743

相关文章

  • 【附源码】Node.js毕业设计高校拼车系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着社会的发展与科技的进步,人们对于出行方式的需求日益多样化,尤其是在高校校园内,学生、教职工等群体的出行需求频繁而复杂。传统的出行方式如步行、自行车......
  • 洛谷题单指南-贪心-P1094 [NOIP2007 普及组] 纪念品分组
    原题链接:https://www.luogu.com.cn/problem/P1094题意解读:贪心选择解题思路:贪心策略:将纪念品按价格由小到大排序,优先选择价格大的一直到超过分组价格上限,再选择价格小的直到超过价格上限,此为一组重复以上过程,直到所有数据都遍历到,采用一头一尾双指针即可。证明:如果最大价格......
  • 1094. 拼车(差分&堆排序)
    Problem:1094.拼车文章目录题目思路Review差分数组定义区间加法减法更新差分数组:为啥这样更新思路1Code思路2Code题目车上最初有capacity个空座位。车只能向一个方向行驶(也就是说,不允许掉头或改变方向)给定整数capacity和一个数组trips,trip[i]=[numPassengersi,......
  • 【教3妹学编程-算法题】拼车
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥 :3妹,什么事呀这么开发。3妹:2哥你看今天的天气多好啊,阳光明媚、万里无云、秋高气爽,适合秋游。2哥:是啊,立冬之后天气多以多云为主,好不容易艳阳高照。可是你不能秋游,赶紧收拾收拾上班去啦3妹:哼,好吧~2哥:给你出了一道题......
  • Mother bear [UVA10945]
    蒟蒻的首篇题解——Motherbear题目大意:一只笨熊只可以理解回文的句子,要你判断句子去掉标点符号、空格后是否回文。思路:1、利用getline()读入整行字符串,并且处理成只有小写/大写字母和数字的字符串。(样例处理结果对照详见①~②分割线内)2、读取到一半必定会出现倒着的(针对于......
  • 顺风车拼车app软件开发功能介绍
      一、智能匹配路线:  顺风车拼车app软件提供平台智能用户司机匹配功能,用户在平台下单后,输入相关的出发地,目的地,人数,提交系统。平台按照司机和路线进行匹配,用户自主选择沿途的路线,实现灵活的拼车体验。  二、在线支付功能:  方便用户在线支付下单,顺风车,拼车app软......
  • 拼车顺风车app软件开发小程序功能开发
      拼车顺风车已成为当前的出行方式,为了让出行的人享受一个私家车的待遇,我们开发出了一款拼车顺风车软件,可以是app或者小程序,下面看看我们的软件都有那些功能。  一、拼车功能  用户的出行通过发布相关的出行需求,出发地,目的地,出行时间,出行人数。其他的用户看到后按照......
  • 1094 The Largest Generation
    题目:Afamilyhierarchyisusuallypresentedbyapedigreetreewhereallthenodesonthesamelevelbelongtothesamegeneration.Yourtaskistofindthegenerationwiththelargestpopulation.InputSpecification:Eachinputfilecontainsonetestcas......
  • 1094 The Largest Generation
    Afamilyhierarchyisusuallypresentedbyapedigreetreewhereallthenodesonthesamelevelbelongtothesamegeneration.Yourtaskistofindthegenerationwiththelargestpopulation.InputSpecification:Eachinputfilecontainsonetestcase.E......
  • POJ 1094Sorting It All Out(拓扑排序)
    题目地址:http://poj.org/problem?id=1094这个题改了一下午。。代码越改越挫。。凑活着看吧。。#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<ctype.h>#include<queue>#include<map>......