#1767
Hard Database Find the subtasks that did not execute
Database
78.2% acceptance
Mar 31, 2026
189
15
No description available.
Solution
Pandas
Time O(n)
Space O(1)
# Table: Tasks
#
# +----------------+---------+
# | Column Name | Type |
# +----------------+---------+
# | task_id | int |
# | subtasks_count | int |
# +----------------+---------+
# task_id is the column with unique values for this table.
# Each row in this table indicates that task_id was divided into subtasks_count subtasks labeled from 1 to subtasks_count.
# It is guaranteed that 2 <= subtasks_count <= 20.
#
#
#
# Table: Executed
#
# +---------------+---------+
# | Column Name | Type |
# +---------------+---------+
# | task_id | int |
# | subtask_id | int |
# +---------------+---------+
# (task_id, subtask_id) is the combination of columns with unique values for this table.
# Each row in this table indicates that for the task task_id, the subtask with ID subtask_id was executed successfully.
# It is guaranteed that subtask_id <= subtasks_count for each task_id.
#
#
#
# Write a solution to report the IDs of the missing subtasks for each task_id.
#
# Return the result table in any order.
#
# The result format is in the following example.
#
# Example 1:
# Input:
# Tasks table:
# +---------+----------------+
# | task_id | subtasks_count |
# +---------+----------------+
# | 1 | 3 |
# | 2 | 2 |
# | 3 | 4 |
# +---------+----------------+
# Executed table:
# +---------+------------+
# | task_id | subtask_id |
# +---------+------------+
# | 1 | 2 |
# | 3 | 1 |
# | 3 | 2 |
# | 3 | 3 |
# | 3 | 4 |
# +---------+------------+
# Output:
# +---------+------------+
# | task_id | subtask_id |
# +---------+------------+
# | 1 | 1 |
# | 1 | 3 |
# | 2 | 1 |
# | 2 | 2 |
# +---------+------------+
# Explanation:
# Task 1 was divided into 3 subtasks (1, 2, 3). Only subtask 2 was executed successfully, so we include (1, 1) and (1, 3) in the answer.
# Task 2 was divided into 2 subtasks (1, 2). No subtask was executed successfully, so we include (2, 1) and (2, 2) in the answer.
# Task 3 was divided into 4 subtasks (1, 2, 3, 4). All of the subtasks were executed successfully.
import pandas as pd
def find_subtasks(tasks: pd.DataFrame, executed: pd.DataFrame) -> pd.DataFrame:
all_subtasks = tasks.apply(
lambda row: pd.DataFrame({
'task_id': row['task_id'],
'subtask_id': range(1, row['subtasks_count'] + 1)
}), axis=1
)
all_subtasks = pd.concat(all_subtasks.tolist(), ignore_index=True)
merged = all_subtasks.merge(executed, on=['task_id', 'subtask_id'], how='left', indicator=True)
result = merged[merged['_merge'] == 'left_only'][['task_id', 'subtask_id']]
return result