该火车站所需的最低平台数量

时间:2017-07-29 20:45:00

标签: java

考虑到特定火车站的所有列车的到达和离开时间,编写代码以找到该火车站所需的最小平台数量,以便所有列车都能按照他们的时间表运行。

1 个答案:

答案 0 :(得分:0)

package com.extra;

import java.util.ArrayList;
import java.util.Collections;

public class MinimumPlatformRequired {
    public static void main(String[] args) {
        MinimumPlatformRequired  m=new MinimumPlatformRequired();
         Double arr[]  = {9.0,  9.40, 9.50,  11.00, 15.00, 18.00};
         Double dep[]  = {9.10, 12.00, 11.20, 11.30, 19.00, 20.00};
         System.out.println("maximum Platform  Required:"+m.getMinimumNumberOfPlatform(arr,dep));
    }
int getMinimumNumberOfPlatform(Double []arrival,Double []dearture){

    ArrayList<Event> eventList=getEventList(arrival, dearture);
    int maxPlatformNo=1;
    int busyPlatform=0;
    for(Event eve:eventList){
        System.out.println(eve.getEventType()+"\t"+eve.getEventTime());
        if(eve.getEventType().equals("A")){
            busyPlatform++;
        }else if(eve.getEventType().equals("D")){
            busyPlatform--;
        }

        if(busyPlatform>maxPlatformNo){
            maxPlatformNo++;
        }
    }
    return maxPlatformNo;
}

ArrayList<Event> getEventList(Double []arrival,Double []dearture){
    ArrayList<Event> eventList=new ArrayList<Event>();
    for(int i=0;i<arrival.length;i++){
        Event ArrivalEve=new Event();
        ArrivalEve.setEventTime(arrival[i]);
        ArrivalEve.setEventType("A");
        Event Deartueeve=new Event();
        Deartueeve.setEventTime(dearture[i]);
        Deartueeve.setEventType("D");
        eventList.add(ArrivalEve);
        eventList.add(Deartueeve);
    }

    Collections.sort(eventList, (Event e1,Event e2)->{return (e1.getEventTime()-e2.getEventTime()>0?1:-1);});

    return eventList;
}
class Event{
  private Double eventTime;
  private String eventType;
public Double getEventTime() {
    return eventTime;
}
public void setEventTime(Double eventTime) {
    this.eventTime = eventTime;
}
public String getEventType() {
    return eventType;
}
public void setEventType(String eventType) {
    this.eventType = eventType;
}
}
}