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


相关推荐

  • 资源小屋-小屋论坛 开通[通俗易懂]

    资源小屋-小屋论坛 开通[通俗易懂]新的BBS已开通,专注收集代码片段、源码资源、Android杂谈。欢迎大家访问。资源小屋:http://www.ziyuanxiaowu.com/portal.php

    2022年7月3日
    42
  • python中decode和encode的区别_python中decode和encode区别

    python中decode和encode的区别_python中decode和encode区别#-*-coding:utf-8importsys”’*首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb231…

    2022年10月7日
    0
  • 通过reduce函数实现数组求和_js数组求和的方法

    通过reduce函数实现数组求和_js数组求和的方法对于实现数组求和,我们常用的思路是通过for、while,对数组进行迭代,依次将他们的值加起来,下面列举常用的两种方法第一种:vararr=[1,2,3,4,5,6];Array.prototype.sum=function(){varsumResult=0;for(vari=0;i<this.lengt…

    2022年10月2日
    0
  • dataTable自定义搜索框位置

    dataTable自定义搜索框位置其实不能叫自定义位置dataTable的搜索框请参阅dataTabledom:http://www.datatables.club/reference/option/dom.html我的需求是将dataTable默认位置的搜索框移动到我的form表单中的搜索位置如图:因为自己不会写前端却要写前端幸得群里大神指点在页面写样式覆盖原来的样式在这里记录一下解决办法…

    2022年7月13日
    16
  • html中怎么让表格居中_html表格上下居中

    html中怎么让表格居中_html表格上下居中回答:IE6/7及IE8混杂模式中,text-align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。解决这个问题比较好的方式,就是为所有需要相对父容器居中对齐的块级元素设置“margin-left:Auto;margin-right:Auto”。但这个方式IE6/IE7/IE8的混杂模式中不支持,所以还要设置父容器的”text…

    2022年9月2日
    3
  • MyBatis Plus 实现多表分页查询

    MyBatis Plus 实现多表分页查询在MybatisPlus中,虽然IService<T>接口帮我们定义了很多常用的方法,但这些都是T对象有用,如果涉及到多表的查询,还是需要自定义Vo对象和自己编写sql语句,MybatisPlus提供了一个Page对象,查询是需要设置其中的size字段和current字段的值一、分页配置 可以直接使用selectPage这样的分页,但返回的数据确实…

    2022年5月1日
    147

发表回复

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

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