Bird
Raised Fist0
DSA C++programming~5 mins

Minimum Number of Platforms in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of the Minimum Number of Platforms problem?
To find the minimum number of train platforms required so that no train has to wait for another to leave.
Click to reveal answer
beginner
Which data structures are commonly used to solve the Minimum Number of Platforms problem efficiently?
Sorted arrays or lists for arrival and departure times, and two pointers to traverse them.
Click to reveal answer
intermediate
Explain the two-pointer technique used in the Minimum Number of Platforms problem.
Use one pointer for arrival times and one for departure times. Move through both arrays to count how many trains are at the station simultaneously.
Click to reveal answer
beginner
Why do we sort arrival and departure times separately in the Minimum Number of Platforms problem?
Sorting helps to process events in chronological order, making it easier to track overlapping trains and calculate platform needs.
Click to reveal answer
beginner
What does the maximum count of overlapping trains represent in the Minimum Number of Platforms problem?
It represents the minimum number of platforms needed at the station.
Click to reveal answer
What is the first step in solving the Minimum Number of Platforms problem?
AAssign platforms randomly
BSort arrival and departure times separately
CCount total trains
DCalculate train speeds
If a train arrives at 10:00 and another departs at 10:00, do they overlap for platform usage?
ANo, they do not overlap
BOnly if departure is after arrival
COnly if arrival is before departure
DYes, they overlap
What does the two-pointer technique track in this problem?
ATrain lengths
BTrain speeds
CPlatform sizes
DNumber of trains currently at the station
What happens when the arrival time is less than the departure time in the algorithm?
AIncrease platform count
BDecrease platform count
CIgnore the train
DReset platform count
What is the time complexity of the efficient solution to the Minimum Number of Platforms problem?
AO(n^2)
BO(n)
CO(n log n)
DO(log n)
Describe the step-by-step approach to solve the Minimum Number of Platforms problem.
Think about how to process train timings in order.
You got /5 concepts.
    Explain why sorting arrival and departure times separately is important in this problem.
    Consider how events happen over time.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the "Minimum Number of Platforms" problem primarily ask you to find?
      easy
      A. The total number of trains passing through the station
      B. The maximum number of trains arriving at the station
      C. The least number of train platforms needed so no train waits
      D. The shortest time a train stays on a platform

      Solution

      1. Step 1: Understand the problem goal

        The problem asks for the minimum platforms so that no train waits due to platform unavailability.
      2. Step 2: Clarify what is being counted

        We count platforms needed to handle overlapping train schedules without delay.
      3. Final Answer:

        The least number of train platforms needed so no train waits -> Option C
      4. Quick Check:

        Minimum platforms = no waiting trains [OK]
      Hint: Focus on overlapping train times to find platform count [OK]
      Common Mistakes:
      • Confusing total trains with platforms needed
      • Ignoring overlapping arrival and departure times
      • Thinking about train speed or distance
      2. Which of the following C++ code snippets correctly declares vectors to store arrival and departure times for the Minimum Number of Platforms problem?
      easy
      A. vector<int> arrival; vector<int> departure;
      B. vector arrival, departure int;
      C. std::vector arrival(int), departure(int);
      D. std::vector<int> arrival, departure;

      Solution

      1. Step 1: Check correct vector syntax in C++

        Vectors must be declared with type inside angle brackets and variable names, e.g., vector<int> arrival;
      2. Step 2: Identify valid declarations

        vector<int> arrival; vector<int> departure; uses correct syntax for two separate vectors: vector<int> arrival; vector<int> departure;
      3. Final Answer:

        vector<int> arrival; vector<int> departure; -> Option A
      4. Quick Check:

        Correct vector syntax = vector<int> arrival; vector<int> departure; [OK]
      Hint: Use vector<int> name; for integer vectors in C++ [OK]
      Common Mistakes:
      • Missing angle brackets <> for vector type
      • Incorrect order of type and variable name
      • Using wrong syntax like vector arrival(int)
      3. Consider the following C++ code snippet for Minimum Number of Platforms problem:
      std::vector<int> arrival = {900, 940, 950, 1100, 1500, 1800};
      std::vector<int> departure = {910, 1200, 1120, 1130, 1900, 2000};
      
      int platforms = 1, result = 1;
      int i = 1, j = 0;
      
      while (i < arrival.size() && j < departure.size()) {
        if (arrival[i] <= departure[j]) {
          platforms++;
          i++;
        } else {
          platforms--;
          j++;
        }
        if (platforms > result) result = platforms;
      }
      
      std::cout << result << std::endl;

      What is the output of this code?
      medium
      A. 2
      B. 3
      C. 4
      D. 1

      Solution

      1. Step 1: Trace arrival and departure comparisons

        Compare arrival[i] and departure[j]: - i=1(940) <= j=0(910)? No, so platforms-- (1->0), j=1 - i=1(940) <= j=1(1200)? Yes, platforms++ (0->1), i=2 - i=2(950) <= j=1(1200)? Yes, platforms++ (1->2), i=3 - i=3(1100) <= j=1(1200)? Yes, platforms++ (2->3), i=4 - i=4(1500) <= j=1(1200)? No, platforms-- (3->2), j=2 - i=4(1500) <= j=2(1120)? No, platforms-- (2->1), j=3 - i=4(1500) <= j=3(1130)? No, platforms-- (1->0), j=4 - i=4(1500) <= j=4(1900)? Yes, platforms++ (0->1), i=5 - i=5(1800) <= j=4(1900)? Yes, platforms++ (1->2), i=6 (end)
      2. Step 2: Find maximum platforms during process

        Maximum platforms reached is 3 during the steps.
      3. Final Answer:

        3 -> Option B
      4. Quick Check:

        Max overlapping trains = 3 [OK]
      Hint: Count overlaps by comparing sorted arrivals and departures [OK]
      Common Mistakes:
      • Not updating platform count correctly
      • Mixing up arrival and departure indices
      • Assuming max platforms equals total trains
      4. The following code snippet is intended to find the minimum number of platforms needed. Identify the bug:
      std::vector<int> arrival = {900, 940, 950, 1100};
      std::vector<int> departure = {910, 1120, 1130, 1200};
      
      int platforms = 1, result = 1;
      int i = 1, j = 0;
      
      while (i < arrival.size() && j < departure.size()) {
        if (arrival[i] < departure[j]) {
          platforms++;
          i++;
        } else {
          platforms--;
          j++;
        }
        if (platforms > result) result = platforms;
      }
      
      std::cout << result << std::endl;
      medium
      A. The comparison should be <= instead of < in if condition
      B. The initial value of platforms should be 0, not 1
      C. The vectors arrival and departure are not sorted
      D. The loop condition should use || instead of &&

      Solution

      1. Step 1: Analyze the if condition for arrival and departure

        The condition uses arrival[i] < departure[j], but trains arriving exactly when another departs need a platform, so <= is correct.
      2. Step 2: Understand impact of using < instead of <=

        Using < misses cases where arrival equals departure, causing undercount of platforms needed.
      3. Final Answer:

        The comparison should be <= instead of < in if condition -> Option A
      4. Quick Check:

        Use <= to count overlapping trains correctly [OK]
      Hint: Use <= to include trains arriving exactly at departure time [OK]
      Common Mistakes:
      • Using < instead of <= causes wrong platform count
      • Not sorting arrival and departure arrays
      • Incorrect loop condition with && vs ||
      5. You have the following train schedules:
      Arrival: {1000, 1010, 1025, 1030, 1040}
      Departure: {1015, 1020, 1035, 1045, 1050}

      What is the minimum number of platforms required so that no train waits? Choose the correct approach and answer.
      hard
      A. Sort only arrival times and count unique values; answer is 4
      B. Count total trains; answer is 5
      C. Use a hash map to count trains per time; answer is 2
      D. Sort both arrays, then use two pointers to count overlaps; answer is 2

      Solution

      1. Step 1: Sort arrival and departure times

        Both arrays are already sorted: arrival = {1000,1010,1025,1030,1040}, departure = {1015,1020,1035,1045,1050}
      2. Step 2: Use two pointers to count overlapping trains

        Compare arrival[i] and departure[j]: - 1010 <= 1015: platforms=2 - 1025 <= 1015? No, platforms=1 - 1025 <= 1020? No, platforms=0 - 1025 <= 1035? Yes, platforms=1 - 1030 <= 1035? Yes, platforms=2 - 1040 <= 1035? No, platforms=1 - 1040 <= 1045? Yes, platforms=2 Maximum platforms needed = 2 during overlaps.
      3. Final Answer:

        Sort both arrays, then use two pointers to count overlaps; answer is 2 -> Option D
      4. Quick Check:

        Two pointer overlap count = 2 platforms [OK]
      Hint: Sort arrivals and departures, count overlaps with two pointers [OK]
      Common Mistakes:
      • Counting total trains instead of overlaps
      • Not sorting both arrays
      • Using incorrect data structures like hash maps unnecessarily
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard