Dataford
Interview QuestionsInterview GuidesExperiencesMock InterviewsPricing
Get started

Rearrange Code Scramble

MediumPython00:00
Practice interviewer
In session
5 left
00:00

Your question is Rearrange Code Scramble. Start with the requirements on the right.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.

Problem

The code blocks in The's code editor were scrambled. Each block lists the blocks that must appear before it because they define required functions, classes, or constants. Restore a valid execution order.

Return the lexicographically smallest valid ordering of block IDs. When multiple currently available blocks can be selected, choose the ID that comes first lexicographically. If the dependencies contain a cycle, return an empty list because no executable ordering exists.

Formal Specification

Implement restore_code_order(blocks), where blocks is a list of dictionaries. Each dictionary has:

  • id: a unique string identifying one code block.
  • depends_on: a list of IDs that must appear earlier than this block.

Return a list of block IDs containing every input block exactly once, or [] if no valid ordering exists.

Constraints

  • 1 <= len(blocks) <= 10^5
  • Each block ID is unique and has length at most 50
  • Every dependency ID appears in blocks
  • Each block has at most 10^4 dependencies
  • The total number of dependency references is at most 2 * 10^5

Function Signature

def restore_code_order(blocks):
Your solutionPython 3
You need to log in / sign up to run or submit.
Run your code to see test output