LeetCode 1776. 车队 II(单调栈)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

在一条单车道上有 n 辆车,它们朝着同样的方向行驶。
给你一个长度为 n 的数组 cars ,其中 cars[i] = [positioni, speedi] ,它表示:

  • positioni 是第 i 辆车和道路起点之间的距离(单位:米)。
    题目保证 positioni < positioni+1
  • speedi 是第 i 辆车的初始速度(单位:米/秒)。

简单起见,所有车子可以视为在数轴上移动的点。
当两辆车占据同一个位置时,我们称它们相遇了。
一旦两辆车相遇,它们会合并成一个车队,这个车队里的车有着同样的位置和相同的速度,速度为这个车队里 最慢 一辆车的速度。

请你返回一个数组 answer ,其中 answer[i] 是第 i 辆车与下一辆车相遇的时间(单位:秒),如果这辆车不会与下一辆车相遇,则 answer[i] 为 -1 。
答案精度误差需在 10-5 以内。

示例 1:
输入:cars = [[1,2],[2,1],[4,3],[7,2]]
输出:[1.00000,-1.00000,3.00000,-1.00000]
解释:经过恰好 1 秒以后,第一辆车会与第二辆车相遇,并形成一个 1 m/s 的车队。
经过恰好 3 秒以后,第三辆车会与第四辆车相遇,并形成一个 2 m/s 的车队。示例 2:
输入:cars = [[3,4],[5,4],[6,3],[9,1]]
输出:[2.00000,1.00000,1.50000,-1.00000]提示:
1 <= cars.length <= 10^5
1 <= positioni, speedi <= 10^6
positioni < positioni+1

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/car-fleet-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 853. 车队(排序)

class Solution {
public:vector<double> getCollisionTimes(vector<vector<int>>& cars) {int n = cars.size();vector<double> ans(n, -1.0);stack<int> s;for(int i = n-1; i >= 0; i--) {while(!s.empty() && (cars[s.top()][1] >= cars[i][1] || (ans[s.top()] > 0 && delta(cars, i, s.top()) > ans[s.top()]))){   // 我的速度没有前车大,追不上前面的,检查再前面的人,前面可能有更慢的//前车 top 能撞上别人 且 撞上别人的时间 小于 我撞上top的时间,那我应该去跟更前面的人计算// 因为前车 top 已经先于我 撞上更前面的s.pop();}if(!s.empty())ans[i] = delta(cars, i, s.top());s.push(i);}return ans;}double delta(vector<vector<int>>& cars, int i, int j)//j 位置远,速度慢{return (cars[j][0] - cars[i][0])/double(cars[i][1] - cars[j][1]);}
};

572 ms 122.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

wpf计算字符大小占像素_LCD作为终端显示字符串的过程

LCD作为终端显示字符串的过程1.本文目的2.资源评估3.显示原理4.嵌入式上汉字处理5.结果验证与展示6.总结1.本文目的做嵌入式图形开发&#xff0c;我们往往都会利用到各种GUI进行交互设计&#xff0c;但是对于GUI的字符串处理与中文字库显示&#xff0c;也许并不会特别关注&…

商城简单类图

转载于:https://www.cnblogs.com/stit/p/4125095.html

交换机的基本配置实验报告_无线网络设计配置即实验报告

工程师ACK接到一个小型图书馆的网络组建项目&#xff0c;根据目前流行的网络组建以及项目地点的使用需要便捷性&#xff0c;采用AC控制的瘦AP模式。不需要AC来管理网络的AP是胖AP需要单独配置&#xff0c;有多少个AP就要配置多少次。组建模式&#xff1a;一楼划分20个VLAN,二楼…

Java 集合框架(List、Set、Map、Iterator、Stack、Properties)

文章目录1. ArrayList2. LinkedList3. HashSet4. TreeSet5. Iterator、ListIterator6. HashMap7. TreeMap8. Stack9. Properties 类读写简单 数据库相关文献&#xff1a;https://www.runoob.com/java/java-collections.html 1. ArrayList 类似动态数组 ArrayList al new Arr…

js获取当前url_javascript如何获取当前URL的主机名?

在javascript中可以使用location对象的hostname属性或者host属性来获取当前URL的主机名&#xff0c;下面本篇文章就来带大家认识这两种属性&#xff0c;希望对大家有所帮助。使用location hostname属性location hostname属性是用于返回当前URL的主机名&#xff1b;它会返回一个…

java访问数据库方式_java数据库访问(二)—JDBC方式(配合连接池)

上文记录了最基础的JDBC连接数据库的方法&#xff0c;但能看出一个问题&#xff0c;就是要不断的重复去创建connection和关闭connection&#xff0c;如果在对数据库的访问比较频繁的情况下&#xff0c;这种处理方式方式在性能方面是不合适的&#xff0c;下面使用JDBC配合数据库…

超频真的不难!G3258超频4.5GHz全攻略

奔腾G3258搭配主板详解【pconline 应用】目前DIY市场上最火热的装机组合莫过于奔腾20周年纪念版处理器G3258搭配B85芯片组主板&#xff0c;只要通过适当的超频&#xff0c;相对较低投入也能来不错的性能体验&#xff0c;因此在奔腾G3258还没上市时&#xff0c;业界对其充满期待…

Java入门到精通——基础篇之static关键字

一、概述static 关键字是声明静态变量&#xff0c;静态方法用的。static的含义是属于类且不属于类对象的变量和函数。二、static的产生。在创建对象的时候除非用new创建那个类的对象&#xff0c;否则实际上并没有获得任何对象只有当执行new来创建对象时数据存储空间才被分配&am…

Java 给编译器看的注释--Annotation

文章目录1. 系统内建的Annotation2. 自定义Annotation3. Retention4. 反射 与 Annotation5. Target6. Documented7. Inherited将配置直接写入到程序之中&#xff1a;Annotation 1. 系统内建的Annotation Override&#xff0c;Deprecated&#xff0c;SuppressWarnings 等 cla…

kafka启动_Kafka安装部署——单节点

1.1 Kafka的单节点部署在实际的工作中&#xff0c;经常使用Kafka作为消息队列&#xff0c;然而并不是每一种业务场景都需要集群版的Kafka&#xff0c;有时单节点的Kafka就能满足了业务的需求。以下就是单节点kafka的部署流程&#xff1a;1.1.1 安装包下载从Kafka官网下载最…

Maven 入门 (1)—— 安装

Maven 入门 &#xff08;1&#xff09;—— 安装 http://blog.csdn.net/kakashi8841/article/details/17371837 1、下载maven安装包 http://maven.apache.org/download.cgi 2、基于Unix的操作系统&#xff08;Linux、Solaris 和 Mac OS X&#xff09; 解压上面下载的包&#xf…

中文新闻分类 数据集_三亚试点用大数据推行垃圾分类:刷卡扔垃圾,分类有奖励|界面新闻...

文丨海南日报 高懿 周月光10月19日电 &#xff0c;垃圾分类如何推行&#xff1f;三亚市引进智能装备&#xff0c;在6个社区开展试点&#xff0c;运用大数据分析&#xff0c;通过行为激励&#xff0c;引导市民积极配合垃圾分类。19日上午&#xff0c;记者现场采访试点社区垃圾分…

为什么a*算法采用哈密尔顿距离作为启发函数比不在位数为启发函数的性能要好?_KDD2019: 使用神经网络为A*搜索算法赋能 --以个性化路径推荐为例...

本文系 KDD2019 论文的解读&#xff1a;Wang, Jingyuan, Ning Wu, Wayne Xin Zhao, Fanzhang Peng, and Xin Lin. "Empowering A* Search Algorithms with Neural Networks for Personalized Route Recommendation." InProceedings of the 25th ACM SIGKDD Internati…

java socket tomcat_在Tomcat环境下使用socket通信

最近在做一个APP的服务器端&#xff0c;但是APP和服务器端使用的是HTTP的通信协议&#xff0c;而另一方与服务器端通信却使用的是自定义的通信协议。具体的系统拓扑如下&#xff1a;为了完成以上的需求&#xff0c;一般的解决方案有两种&#xff1a;自己实现服务器端程序&#…

安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3

类似主题app&#xff0c;介绍给大家&#xff0c;是一款可以让我们在线进行主题变幻&#xff0c;拥有更多特色主题风格的服务平台。有了它用户就可以体验不同机型的主题风格&#xff0c;不论苹果还是安卓都是支持的&#xff0c;喜欢的不妨来下载看看&#xff01;【类似主题应用功…

Java 文件 IO 操作

文章目录1. File类2. RandomAccessFile类3. 流类3.1 字节流3.2 字符流3.3 管道流3.4 ByteArrayInputStream、ByteArrayOutputStream3.5 System.in、System.out3.6 打印流 PrintStream3.7 DataInputStream、DataOutputStream3.8 合并流3.9 字节流与字符流的转换3.10 IO包类层次关…

java dsp_GitHub - Onemeaning/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...

JavaDsp数字信号处理(DSP)方面的Java封装&#xff0c;包含常用的一些处理方法&#xff0c;如滤波、信号变换等等。该类库是我本科毕业设计中的一部分&#xff0c;绝大部分都是我自己写实现的&#xff0c;很少部分算法有我另外几个朋友参与讨论和实现&#xff0c;在此表示感谢。…

简单banner制作

简单做了一个banner,效果不是很好&#xff0c;主要温习了蒙版知识和滤镜的使用&#xff0c;其中使用&#xff08;图像 > 调整 > 照片滤镜&#xff0c; 可以让图片融合得更协调&#xff0c;另外图片上添加斜线做背景&#xff0c;这些小技巧在做banner时&#xff0c;能打造…

苹果11怎么录屏_苹果11怎么设置骚扰电话号码

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。系统版本为&#xff0c;苹果11设置拦截骚扰电话的方法如下&#xff1a;1、首先打开手机设置&#xff0c;找到【勿扰模式】&#xff1b;2、将勿扰模式开启后&#xff0c;点击下方【允…

BigTable的开源实现:HBase数据库

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 文章目录1. 两种数据库2. HBase 可伸缩架构3. HBase 可扩展数据模型4. HBase高性能存储1. 两种数据库 关系数据库&#xff08;RDBMS&#xff09;缺点&#xff1a; 糟糕的 海量数据处理能力、僵硬的设计约束 从 …