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.

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)[通俗易懂]

    DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)[通俗易懂]建立好DNS服务器后,用户可以在菜单中选择【属性】选项修改其配置。下面介绍如何配置DNS服务器的选项卡。具体的步骤如下。1.【接口】选项卡的配置图15-21所示为DNS服务器属性的【接口】选项卡,默认情况下,DNS服务器将侦听所有向该DNS服务器发出的域名解析请求和转发解析的DNS消息。如果要限制DNS服务器只负责侦听特定的IP地址发出的域名解析请求,可以在该选项卡中进行设置。选中【只在下列IP地…

    2022年6月4日
    49
  • BigDecimal 类型比较大小

    BigDecimal 类型比较大小1.标准做法Longzero=0l;BigDecimalbig_decimal_num=newBigDecimal(zero);intr=big_decimal_num.compareTo(BigDecimal.ZERO);//和0,Zero比较if(r==0)//等于…

    2022年7月14日
    18
  • 请简述什么是Vue组件化开发_vue组件化开发

    请简述什么是Vue组件化开发_vue组件化开发前言真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程演变过程1.0一般情况下vue都是单页面开发,所以项目中只会有一个inde

    2022年7月29日
    2
  • 集赞神器!朋友圈集赞一键秒搞定!从此集赞随心所欲!

    集赞神器!朋友圈集赞一键秒搞定!从此集赞随心所欲!今天,刚开始不知道要分享什么内容,下午烦恼时,结果收到一好友“朋友圈帮忙点赞”的消息,瞬间拉黑删除的心都有了,但是呢又不能这样做,点赞也不是,不点赞也不是,强(自)大(恋)的我告诉自己冷静一下,换个角度想问题,灵感来了~不如,今天就分享一下朋友圈一键集赞的方法~从此集赞随心所欲!要是下次再有好友让你帮忙集赞的时候,你可以将本文章甩给他,相信他会感谢你的~千万不要甩给商家!说到朋…

    2022年6月9日
    153
  • 静态路由调用BFD「建议收藏」

    静态路由调用BFD「建议收藏」BFD:双向转发检查作用:毫秒级故障检查,通常结合三层协议(如静态路由、vrrp、ospf、BGP等)实现链路故障快速检查R1<Huawei>system-view//进入全局模式[Huawei]sysnameR1//改名[R1]undoinfo-centerenable//关闭信息告警提示[R1]interfaceLoopBa…

    2022年9月25日
    0
  • 什么是字符串常量池_常量池中的字符串是对象吗

    什么是字符串常量池_常量池中的字符串是对象吗关于字符串与字符串常量池JDK1.8-1.9,String底层从char数组变成了byte数组,原因是部分字符仅占一个byte,而堆中含有大量的String字符串,该优化能节省较多空间。StringTable为什么要调整(移入堆内)(JDK1.6-1.7)permSize默认比较小永久代垃圾回收频率低字符串拼接操作常量与常量的拼接结果在常量池,原理是编译器优化常量池中不会存在相同内容的常量只要其中一个是变量,结果就在堆中。变量拼接的原理是StringBuilder(final不算变量)

    2022年7月28日
    22

发表回复

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

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