力扣题解2332

news2024/9/20 16:43:00

大家好,欢迎来到无限大的频道。

今日继续给大家带来力扣题解。

题目描述(中等)​:

坐上公交的最晚时间

给你一个下标从 0 开始长度为 n 的整数数组 buses ,其中 buses[i] 表示第 i 辆公交车的出发时间。同时给你一个下标从 0 开始长度为 m 的整数数组 passengers ,其中 passengers[j] 表示第 j 位乘客的到达时间。所有公交车出发的时间互不相同,所有乘客到达的时间也互不相同。

给你一个整数 capacity ,表示每辆公交车 最多 能容纳的乘客数目。

每位乘客都会搭乘下一辆有座位的公交车。如果你在 y 时刻到达,公交在 x 时刻出发,满足 y <= x  且公交没有满,那么你可以搭乘这一辆公交。最早 到达的乘客优先上车。

返回你可以搭乘公交车的最晚到达公交站时间。你 不能 跟别的乘客同时刻到达。

注意:数组 buses 和 passengers 不一定是有序的。

​解题思路:

  1. 排序:

    • 首先,对 buses 和 passengers 数组进行排序。这样可以确保我们按照时间顺序处理公交车和乘客。

  2. 模拟乘客上车:

    • 对于每辆公交车,初始化 space 为 capacity。

    • 使用一个 while 循环,让乘客按顺序上车,直到公交车坐满或者没有乘客能在此时刻之前到达。

    • 每次乘客上车后,减少 space,并增加 pos。

    • 使用两个变量:pos 跟踪当前处理的乘客,space 表示当前公交车上剩余的座位数。

    • 遍历每一辆公交车:

  3. 计算最晚到达时间:

    • 在所有公交车处理完后,pos 指向最后一个已经上车的乘客的下一个位置。

    • 如果最后一辆公交车还有空位(space > 0),则你可以在最后一辆公交车的出发时间到达。

    • 如果没有空位,则你需要在最后一个乘客到达之前到达,因此 lastCatchTime 初始为 passengers[pos - 1]。

  4. 调整到达时间:

    • 确保 lastCatchTime 不与任何乘客的到达时间相同,通过减少 lastCatchTime,直到它与任何乘客的到达时间不冲突。

代码参考​:

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}
​
int latestTimeCatchTheBus(int* buses, int busesSize, int* passengers, int passengersSize, int capacity) {
    qsort(buses, busesSize, sizeof(int), compare);
    qsort(passengers, passengersSize, sizeof(int), compare);
    int pos = 0;
    int space = 0;
​
    for (int i = 0; i < busesSize; i++) {
        int arrive = buses[i];
        space = capacity;
        while (space > 0 && pos < passengersSize && passengers[pos] <= arrive) {
            space--;
            pos++;
        }
    }
​
    pos--;
    int lastCatchTime = space > 0 ? buses[busesSize - 1] : passengers[pos];
    while (pos >= 0 && passengers[pos] == lastCatchTime) {
        pos--;
        lastCatchTime--;
    }
​
    return lastCatchTime;
}

时间复杂度​:

  • 排序:排序 buses 和 passengers 的时间复杂度分别是 O(n log n) 和 O(m log m),其中 n 是公交车数量,m 是乘客数量。

  • 乘客上车模拟:遍历每辆公交车和每个乘客的过程是 O(n + m)。

  • 调整到达时间:在最坏情况下,可能需要遍历所有乘客来调整 lastCatchTime,这个过程是 O(m)。

因此,总的时间复杂度为 O(n log n + m log m),因为排序操作是最耗时的部分。

空间复杂度:

  • 代码中没有使用额外的数组或复杂的数据结构,除了输入数组和一些常数空间的变量之外,没有额外的空间开销。

  • 因此,空间复杂度为 O(1)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2146208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(计算机毕设)基于SpringBoot+Vue的“乐锄”农产品销售网站的设计与实现

毕业设计&#xff08;论文&#xff09; 博主可接毕设&#xff01;&#xff01;&#xff01; 基于SpringBootVue的“乐锄”农产品销售网站的设计与实现 摘 要 传统的农资采购销售模式&#xff0c;造成农业生产的效率和质量低&#xff0c;人们对食品安全问题关注不断增加&#x…

WhaleStudio 与飞腾 S5000C 处理器完成产品兼容测试!

中秋佳节后喜讯传来&#xff01;经过飞腾信息技术有限公司和北京白鲸开源科技有限公司的联合严格测试&#xff0c;白鲸开源 WhaleStudio 套件 V2.6 版本已在飞腾信息技术有限公司的腾云 S5000C 处理器平台上成功安装并稳定运行。 这标志着白鲸开源商业与飞腾的合作进入了一个新…

QT widgets 窗口缩放,自适应窗口大小进行布局

1. 窗口布局 2. 尺寸策略&#xff1a;扩展 Fixed (固定): 行为&#xff1a;控件的大小是固定的&#xff0c;不会随着窗口大小的变化而改变。它的大小由控件的 sizeHint() 返回的值决定。 适用场景&#xff1a;当你希望控件的大小保持不变&#xff0c;不随布局调整时使用&#x…

2018年国赛高教杯数学建模C题大型百货商场会员画像描绘解题全过程文档及程序

2018年国赛高教杯数学建模 C题 大型百货商场会员画像描绘 原题再现 在零售行业中&#xff0c;会员价值体现在持续不断地为零售运营商带来稳定的销售额和利润&#xff0c;同时也为零售运营商策略的制定提供数据支持。零售行业会采取各种不同方法来吸引更多的人成为会员&#x…

如何搭无人直播?这2种方式靠谱!

如何搭无人直播&#xff1f;这2种方式靠谱&#xff01; 这几个步骤可以搭建一个合规的无人直播间&#xff0c;大家用心看哦#无人直播#直播带货#直播违规 家人们今天带大家来看一下直播&#xff0c;带货还能这两波&#xff0c;我们只需要一台手机&#xff0c;再加上一个软件&a…

(11)(2.1.2) DShot ESCs(二)

文章目录 前言 3 配置伺服功能 4 检查RC横幅 5 参数说明 前言 DShot 是一种数字 ESC 协议&#xff0c;它允许快速、高分辨率的数字通信&#xff0c;可以改善飞行器控制&#xff0c;这在多旋翼和 quadplane 应用中特别有用。 3 配置伺服功能 如上所述&#xff0c;如果使用…

面试复盘与 AI 大模型学习

面试相关 一、面试公司与岗位信息 面试公司&#xff1a;顺丰科技面试岗位&#xff1a;AI 方向产品经理工作地点&#xff1a;深圳面试结果&#xff1a;通过&#xff0c;但放弃了该 offer 二、面试过程 整体情况 整个暑期实习面试之旅包含三轮&#xff0c;其中两轮是专业面试…

基于单片机的自动门控制系统

本设计基于单片机的自动门控制系统。该系统以单片机STM32F103C8T6为核心&#xff0c;配备了多种硬件设备&#xff0c;包括DHT11温湿度传感器、HC-SR505人体感应模块、红外对管、OLED显示器和步进电机等。系统提供自动和手动两种工作模式。在自动模式下&#xff0c;系统能够感应…

uniapp中使用picker-view选择时间

picker-view 是 UniApp 中用于展示和选择数据的组件。它适用于创建多列选择器&#xff0c;类似于 iOS 和 Android 系统中的选择器视图。以下是 picker-view 的详细介绍&#xff0c;包括用法、属性和事件。 一 用法 <template><view><picker-view :value"…

计算机组成原理(笔记3)

IEEE754浮点数标准 这里只讲32位单精度 S——尾数符号&#xff0c;0正1负&#xff1b; M——尾数, 纯小数表示, 小数点放在尾数域的最前面。 一般采用原码或补码表示。 E——阶码&#xff0c;采用“移码”表示; 阶符采用隐含方式&#xff0c;即采用“移码”方法来表示正负指数…

杭州电子科技大学《2020年+2021年861自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自联盟自动化考研联盟企业店( /闲 店)的&#xff1a;《25届杭州电子科技大学861自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2020年真题 2021年真题 Part1&#xff1a;20202021年完整…

大舍传媒:尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展

大舍传媒&#xff1a;尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展 在全球化的浪潮下&#xff0c;媒体作为信息传播的重要渠道&#xff0c;对于促进行业发展和推动社会进步扮演着举足轻重的角色。特别是在非洲大陆上人口最多、经济最发达的国家——尼日利亚&#xff0c;传统…

AI 大模型开发 —— 面对转行挑战与机遇,探索有效学习开启职业转型

前言 转行从事 AI 大模型开发是否困难&#xff1f;怎样学习才能顺利找到相关工作&#xff1f;这大概是所有新人都会面临的问题。基于此&#xff0c;我结合自身经历&#xff0c;进行了一些总结并整理出学习方法&#xff0c;期望能给大家提供一定的帮助。 1. AI 大模型开发基础…

Python办公自动化案例(四):将Excel数据批量保存到Word表格中

案例:将excel数据批量保存到Word表格中 要将Excel数据批量保存到Word表格中,可以使用Python的openpyxl库来读取Excel文件,以及python-docx库来创建和编辑Word文档。以下是一段示例代码,以及代码解释和一些注意事项。 准备好的Excel数据: 1.安装所需库 首先,确保你已经…

线程池的执行流程总结

1、提交一个线程任务&#xff0c;首先判断线程池中是否存在空闲线程&#xff1b; 存在空闲线程&#xff0c;则直接分配一个空闲线程&#xff0c;用于执行线程任务。 不存在空闲线程&#xff0c;则线程池会判断当前“存活的线程数”是否超出核心线程数&#xff08;corePoolSize&…

【我的 PWN 学习手札】Tcache dup

前言 Tcache dup&#xff0c;实际上是 tcache 的 double free&#xff0c;能达到 UAF 的效果&#xff0c;实现 Tcache poisoning。 一、Tcache dup 早期 tcache 没有检查 double free&#xff0c;也没有对 counts 做检查。 对同一个大小落在 Tcachebin 的 chunk 进行 doubl…

内存管理(c++)

欢迎来到本期节目- - 内存区域 c/c中程序内存区域划分&#xff1a; 你知道它在内存的哪个区域吗&#xff1f; int global_var 1;static int static_global_var 1;void test1() {static int static_part_var 1; }这里的全局变量&#xff0c;静态全局变量&#xff0c;静态…

HTML讲解(二)head部分

目录 1. 2.的使用 2.1 charset 2.2 name 2.2.1 describe关键字 2.2.2 keywords关键字 2.2.3 author关键字 2.2.4 http-equiv 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#x…

spring springboot 日志框架

一、常见的日志框架 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 注意&#xff1a;SLF4j 类似于接口 Log4j &#xff0c;Logback 都是出自同一作者之手 JUL 为apache 公司产品 Spring&#xff08;commons-logging&#xff09;、Hibernate&#xff08;jboss…

实力再证|海云安连续三年荣登中国网络安全产业联盟(CCIA)榜单,蝉联两届“中国网安产业成长之星”

9月6日&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;正式公布了2024年中国网安产业竞争力50强、成长之星、潜力之星榜单&#xff0c;据悉&#xff0c;本次榜单调研共历时数月&#xff0c;从多个维度对调研企业进行了全面评估分析&#xff0c;遴选出2024年中国…