Skip to main content
Back to problems
#2687
Easy Database

Bikes last time used

Database
80.5% acceptance
Mar 31, 2026
23
3

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Bikes
# 
# +-------------+----------+
# | Column Name | Type     |
# +-------------+----------+
# | ride_id     | int      |
# | bike_number | int      |
# | start_time  | datetime |
# | end_time    | datetime |
# +-------------+----------+
# ride_id column contains unique values.
# Each row contains a ride information that includes ride_id, bike number, start and end time of the ride.
# It is guaranteed that start_time and end_time are valid datetime values.
# 
# Write a solution to find the last time when each bike was used.
# 
# Return the result table ordered by the bikes that were most recently used. 
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# Bikes table:
# +---------+-------------+---------------------+---------------------+
# | ride_id | bike_number | start_time          | end_time            |
# +---------+-------------+---------------------+---------------------+
# | 1       | W00576      | 2012-03-25 11:30:00 | 2012-03-25 12:40:00 |
# | 2       | W00300      | 2012-03-25 10:30:00 | 2012-03-25 10:50:00 |
# | 3       | W00455      | 2012-03-26 14:30:00 | 2012-03-26 17:40:00 |
# | 4       | W00455      | 2012-03-25 12:30:00 | 2012-03-25 13:40:00 |
# | 5       | W00576      | 2012-03-25 08:10:00 | 2012-03-25 09:10:00 |
# | 6       | W00576      | 2012-03-28 02:30:00 | 2012-03-28 02:50:00 |
# +---------+-------------+---------------------+---------------------+
# 
# Output:
# +-------------+---------------------+
# | bike_number | end_time            |
# +-------------+---------------------+
# | W00576      | 2012-03-28 02:50:00 |
# | W00455      | 2012-03-26 17:40:00 |
# | W00300      | 2012-03-25 10:50:00 |
# +-------------+---------------------+
# Explanation:
# bike with number W00576 has three rides, out of that, most recent ride is with ride_id 6 which ended on 2012-03-28 02:50:00.
# bike with number W00300 has only 1 ride so we will include end_time in output directly.
# bike with number W00455 has two rides, out of that, most recent ride is with ride_id 3 which ended on 2012-03-26 17:40:00.
# Returning output in order by the bike that were most recently used.

import pandas as pd

def last_used_time(bikes: pd.DataFrame) -> pd.DataFrame:
  result = bikes.groupby('bike_number')['end_time'].max().reset_index()
  return result.sort_values('end_time', ascending=False)