Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

import java.util.ArrayList; import java.util.Comparator; / / Define the Train class class Train { private int trainId; private String arrivalTime; private String departureTime; / / Constructor

import java.util.ArrayList;
import java.util.Comparator;
// Define the Train class
class Train {
private int trainId;
private String arrivalTime;
private String departureTime;
// Constructor
public Train(int trainId, String arrivalTime, String departureTime){
this.trainId = trainId;
this.arrivalTime = arrivalTime;
this.departureTime = departureTime;
}
// Getters
public int getTrainId(){
return trainId;
}
public String getArrivalTime(){
return arrivalTime;
}
public String getDepartureTime(){
return departureTime;
}
}
// Define the TrainScheduleManager class
class TrainScheduleManager {
private ArrayList trains;
// Constructor
public TrainScheduleManager(){
this.trains = new ArrayList<>();
}
// Method to add a train to the schedule
public void addTrain(int trainId, String arrivalTime, String departureTime){
Train newTrain = new Train(trainId, arrivalTime, departureTime);
int index = binarySearchInsertPosition(arrivalTime);
trains.add(index, newTrain);
}
// Helper method to find the insert position using binary search
private int binarySearchInsertPosition(String targetArrivalTime){
int low =0;
int high = trains.size()-1;
while (low <= high){
int mid = low +(high - low)/2;
String midArrivalTime = trains.get(mid).getArrivalTime();
if (midArrivalTime.compareTo(targetArrivalTime)<0){
low = mid +1;
} else if (midArrivalTime.compareTo(targetArrivalTime)>0){
high = mid -1;
} else {
low = mid +1; // Insert after duplicates (unlikely as per the problem)
}
}
return low; // Insert position
}
// Method to remove a train from the schedule by trainId
public void removeTrain(int trainId){
for (int i =0; i < trains.size(); i++){
if (trains.get(i).getTrainId()== trainId){
trains.remove(i);
break;
}
}
}
// Method to display the current train schedule
public void displaySchedule(){
System.out.println("Train Schedule:");
for (Train train : trains){
System.out.println("Train ID: "+ train.getTrainId()+
"| Arrival: "+ train.getArrivalTime()+
"| Departure: "+ train.getDepartureTime());
}
}
}
// Main class to demonstrate TrainScheduleManager
public class Main {
public static void main(String[] args){
TrainScheduleManager manager = new TrainScheduleManager();
// Adding trains
manager.addTrain(1,"08:00","08:30");
manager.addTrain(2,"09:00","09:30");
manager.addTrain(3,"09:30","10:00");
manager.addTrain(4,"10:00","10:30");
// Display initial schedule
manager.displaySchedule();
// Remove train with ID 2
manager.removeTrain(2);
// Display updated schedule
System.out.println("
Updated Train Schedule after removing Train 2:");
manager.displaySchedule();
}
}
what is the time complexity and space complexity of the given code

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions