Skip to main content

Minimum platforms problem | Greedy approach

Minimum Platforms

Given arrival and departure times of all trains that reach a railway station. Find the minimum number of platforms required for the railway station so that no train is kept waiting.
Consider that all the trains arrive on the same day and leave on the same day. Arrival and departure time can never be the same for a train but we can have arrival time of one train equal to departure time of the other. At any given instance of time, same platform can not be used for both departure of a train and arrival of another train. In such cases, we need different platforms.

Example 1:

Input: n = 6 
arr[] = {0900, 0940, 0950, 1100, 1500, 1800}
dep[] = {0910, 1200, 1120, 1130, 1900, 2000}
Output: 3
Explanation: 
Minimum 3 platforms are required to 
safely arrive and depart all trains.

Example 2:

Input: n = 3
arr[] = {0900, 1100, 1235}
dep[] = {1000, 1200, 1240}
Output: 1
Explanation: Only 1 platform is required to 
safely manage the arrival and departure 
of all trains. 


Your Task:
You don't need to read input or print anything. Your task is to complete the function findPlatform() which takes the array arr[] (denoting the arrival times), array dep[] (denoting the departure times) and the size of the array as inputs and returns the minimum number of platforms required at the railway station such that no train waits.

Note: Time intervals are in the 24-hour format(HHMM) , where the first two characters represent hour (between 00 to 23 ) and the last two characters represent minutes (this may be > 59).


Expected Time Complexity: O(nLogn)
Expected Auxiliary Space: O(n)



SOLUTION: 


class Solution{
    public:
    //Function to find the minimum number of platforms required at the
    //railway station such that no train waits.
    int findPlatform(int arr[], int dep[], int n)
    {  
        sort(arr , arr+n);
        sort(dep , dep+n);
        int ans = INT_MIN;
        int count =0;
        int i =0;
        int j =0;
        while(i < n)
        {
            if(arr[i] <= dep[j])
            {
                count ++;
                ans = max(count , ans);
                i++;
            }
            else
            if(arr[i] > dep[j])
            {
                count--;
                j++;
               
            }
           
           
           
        }
        return ans;
    }
};


Comments

Popular posts from this blog

[PDF DOWNLOAD] AKTU Quantum series data structure b.tech 2nd year download

  All AKTU Quantums are available here. Get your hands on AKTU Quantums and boost your grades in AKTU semester exams. You can either search them category wise or can use the search bar or can manually search on this page. Download aktu second year quantum pdf data structures  download  data structures quantum aktu download aktu data structures quantum click here to download  write in comment section if you want quantum of any other subject.

Root to Leaf Paths | binary tree | geeksforgeeks solution

  Root to Leaf Paths Given a Binary Tree of size N, you need to find all the possible paths from root node to all the leaf node's of the binary tree. Example 1: Input: 1 / \ 2 3 Output: 1 2 #1 3 # Explanation: All possible paths: 1->2 1->3 Example 2: Input:   10   / \   20 30   / \   40 60 Output: 10 20 40 #10 20 60 #10 30 # Your Task: Your task is to complete the function  Paths()  that takes the root node as an argument and return all the possible path. (All the path are printed '#' separated by the driver's code.) Note:  The return type cpp:  vector java:  ArrayList> python:  list of list Expected Time Complexity:  O(N). Expected Auxiliary Space:  O(H). Note:  H is the height of the tree. Constraints: 1<=N<=10 3 Note:  The  Input/Ouput  format and  Example  given, are used for the system'...

2485. Find the Pivot Integer | Binary search

  Given a positive integer   n , find the   pivot integer   x   such that: The sum of all elements between  1  and  x  inclusively equals the sum of all elements between  x  and  n  inclusively. Return  the pivot integer  x . If no such integer exists, return  -1 . It is guaranteed that there will be at most one pivot index for the given input.   Example 1: Input: n = 8 Output: 6 Explanation: 6 is the pivot integer since: 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21. Example 2: Input: n = 1 Output: 1 Explanation: 1 is the pivot integer since: 1 = 1. Example 3: Input: n = 4 Output: -1 Explanation: It can be proved that no such integer exist.   Constraints: 1 <= n <= 1000 Solution : class Solution { publ ic:     int pivotInteger( int n ) {         int sum = (( n )*( n + 1 ))/ 2 ;         int i = 1 ;         int j =...