#2142
Medium Database The number of passengers in each bus i
Database
49.1% acceptance
Mar 31, 2026
117
12
No description available.
Solution
Pandas
Time O(n)
Space O(1)
# Table: Buses
#
# +--------------+------+
# | Column Name | Type |
# +--------------+------+
# | bus_id | int |
# | arrival_time | int |
# +--------------+------+
# bus_id is the column with unique values for this table.
# Each row of this table contains information about the arrival time of a bus at the LeetCode station.
# No two buses will arrive at the same time.
#
#
#
# Table: Passengers
#
# +--------------+------+
# | Column Name | Type |
# +--------------+------+
# | passenger_id | int |
# | arrival_time | int |
# +--------------+------+
# passenger_id is the column with unique values for this table.
# Each row of this table contains information about the arrival time of a passenger at the LeetCode station.
#
#
#
# Buses and passengers arrive at the LeetCode station. If a bus arrives at the station at time tbus and a passenger arrived at time tpassenger where tpassenger <= tbus and the passenger did not catch any bus, the passenger will use that bus.
#
# Write a solution to report the number of users that used each bus.
#
# Return the result table ordered by bus_id in ascending order.
#
# The result format is in the following example.
#
# Example 1:
# Input:
# Buses table:
# +--------+--------------+
# | bus_id | arrival_time |
# +--------+--------------+
# | 1 | 2 |
# | 2 | 4 |
# | 3 | 7 |
# +--------+--------------+
# Passengers table:
# +--------------+--------------+
# | passenger_id | arrival_time |
# +--------------+--------------+
# | 11 | 1 |
# | 12 | 5 |
# | 13 | 6 |
# | 14 | 7 |
# +--------------+--------------+
# Output:
# +--------+----------------+
# | bus_id | passengers_cnt |
# +--------+----------------+
# | 1 | 1 |
# | 2 | 0 |
# | 3 | 3 |
# +--------+----------------+
# Explanation:
# - Passenger 11 arrives at time 1.
# - Bus 1 arrives at time 2 and collects passenger 11.
#
# - Bus 2 arrives at time 4 and does not collect any passengers.
#
# - Passenger 12 arrives at time 5.
# - Passenger 13 arrives at time 6.
# - Passenger 14 arrives at time 7.
# - Bus 3 arrives at time 7 and collects passengers 12, 13, and 14.
import pandas as pd
def count_passengers_in_bus(buses: pd.DataFrame, passengers: pd.DataFrame) -> pd.DataFrame:
buses = buses.sort_values('arrival_time').reset_index(drop=True)
passengers = passengers.sort_values('arrival_time').reset_index(drop=True)
result = []
prev_bus_time = -float('inf')
for _, bus in buses.iterrows():
cnt = len(passengers[(passengers['arrival_time'] > prev_bus_time) & (passengers['arrival_time'] <= bus['arrival_time'])])
result.append({'bus_id': bus['bus_id'], 'passengers_cnt': cnt})
prev_bus_time = bus['arrival_time']
return pd.DataFrame(result).sort_values('bus_id')