Car Fleet

Car FleetN carsaregoingtothesamedestinationalongaonelaneroad. Thedestinationis target milesaway.Eachcar i hasaconstantspeed speed[i] (inmilesperhour),andinitialposition position[i] m…

大家好,又见面了,我是你们的朋友全栈君。

N cars are going to the same destination along a one lane road.  The destination is target miles away.

Each car i has a constant speed speed[i] (in miles per hour), and initial position position[i] miles towards the target along the road.

A car can never pass another car ahead of it, but it can catch up to it, and drive bumper to bumper at the same speed.

The distance between these two cars is ignored – they are assumed to have the same position.

A car fleet is some non-empty set of cars driving at the same position and same speed.  Note that a single car is also a car fleet.

If a car catches up to a car fleet right at the destination point, it will still be considered as one car fleet.

How many car fleets will arrive at the destination?

 

Example 1:

Input: target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
Output: 3
Explanation:
The cars starting at 10 and 8 become a fleet, meeting each other at 12.
The car starting at 0 doesn't catch up to any other car, so it is a fleet by itself.
The cars starting at 5 and 3 become a fleet, meeting each other at 6.
Note that no other cars meet these fleets before the destination, so the answer is 3.

Note:

  1. 0 <= N <= 10 ^ 4
  2. 0 < target <= 10 ^ 6
  3. 0 < speed[i] <= 10 ^ 6
  4. 0 <= position[i] < target
  5. All initial positions are different.

 

题目理解:

给定一系列车辆的位置和速度的集合,若后来车辆赶上前面的车辆,则合成为一个车队,问最终会形成多少个车队

解题思路:

首先按位置从近到远排列所有车辆,然后计算每一辆车到达终点的时间,如果后来的车辆行驶时间小于前面的车辆,那么说明它会追上前面的车辆并形成一个车队,若后来的车行驶时间大于前面的车辆,那么它将不会和前面的车辆形成车队,而会被它后面的车辆追上形成车队。根据以上分析,只需要计算行驶时间非递减的数目就行

代码如下:

class Solution {
	class Node implements Comparable<Node>{
		double position;
		int speed;
		public Node(int t, int s) {
			position = t;
			speed = s;
		}
		@Override
		public int compareTo(Node a) {
			// TODO Auto-generated method stub
			return (int)(a.position - this.position);
		}
	}
	
    public int carFleet(int target, int[] position, int[] speed) {
        int res = 0;
        double front;
        int len = position.length;
        if(len == 0)
        	return 0;
        List<Node> list = new ArrayList<Node>();
        for(int i = 0; i < len; i++) {
        	list.add(new Node(position[i], speed[i]));
        }
        Collections.sort(list);
        Node it = list.get(0);
        front = (target - it.position) / it.speed;
        for(int i = 1; i < len; i++) {
        	it = list.get(i);
        	double time = (target - it.position) / it.speed;
        	if(time > front) {
        		res++;
        		front = time;
        	}
        }
        return res + 1;
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131587.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • java实现仿QQ即时聊天[通俗易懂]

    java实现仿QQ即时聊天[通俗易懂]这是我的java大作业,这里就直接贴上我的实验报告了。1.1项目介绍这是一个模仿QQ的即时聊天软件,可以通过运行在本地的服务端,实现两个客服端之间的通信,即聊天。采用的是javafx架构作为GUI设计架构,个人认为优点是可以自己设计css,使界面达到美观的目的。本项目共有登录、注册、重置密码、主界面发消息、添加好友、好友列表项、查看聊天记录、删除聊天记录、未读消息提醒、好友主页、我的主页等模块…

    2022年5月15日
  • 【电子书下载】《Android应用程序开发与典型案例》完整版!!

    【电子书下载】《Android应用程序开发与典型案例》完整版!!图书简介:《android应用程序开发与典型案例》共23章,内容包含两大部分。第一部分是android程序设计基础,在介绍android环境搭建以及android系统基本控件和组件后,详细介绍了android系统应用编程中典型的技术,比如,android中的图形图像、多媒体编程、gps定位与地图编程等;第二部分是android程序ui设计,从手机软件的交互设计谈起,介绍了android用户界面

    2022年6月29日
  • 范围管理_范围管理的获取方法

    范围管理_范围管理的获取方法一、范围管理的基本理解(1)包括确保项目做且只做所需的全部工作,已成功完成项目的各个过程。(2)项目范围管理需要做的工作》明确项目边界。》对项目执行工作进行监控。》防止项目范围发生蔓延。指对时间、成本和资源做相应调整,未经控制的产品或项目范围的扩大。(3)产品范围和项目范围》产品范围:产品、服务或结果的特性和功能。》项目范围:是否完成以项目管理计划、项目范围说明书、WBS、以及WBS字典作为衡量标准。产品范围是否完成以产品需求说明书作为衡量标准。二、规划范围管理1、项目范围管理计划的内

    2022年4月19日
  • LoadRunner教程(12)-LoadRunner IP欺骗[通俗易懂]

    LoadRunner教程(12)-LoadRunner IP欺骗[通俗易懂]loadrunner不支持自动ip,所以要设置成静态ip打开IPWizard这一步不用管,直接next然后点击完成然后添加IP

    2022年5月23日
  • 断点续传

    断点续传断点续传

    2022年4月25日
  • Python学习手册之控制结构(一)

    Python学习手册之控制结构(一)

    2021年6月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号