Google Interview Arrangement of Blocks
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Introduction
The "Arrangement of Blocks" problem is a popular type of algorithm question that might appear during a Google interview, specifically focusing on challenging one’s problem-solving and optimization skills. This form of the problem requires both analytical thinking and knowledge of algorithm design, testing a developer’s ability to think critically about how elements can be arranged or organized efficiently.
Problem Description
A typical problem in this category might be presented as follows: Given a set of blocks, each block has a height, width, and depth. The goal is to arrange the blocks in a tower, subject to rules such as a block can only be placed on top of another if it is strictly smaller in every dimension. The task is to find the maximum possible height of the tower.
Technical Challenges and Concepts
1. Dynamic Programming (DP)
Dynamic programming is a powerful tool for optimizing algorithms to solve recursive problems. The crux of using DP in the "Arrangement of Blocks" problem is to store solutions of overlapping subproblems to avoid redundant computations. The steps to apply DP effectively include:
• Define Subproblems: Convert the problem into smaller, manageable subproblems. For example, for each block, determine the maximum height of the tower ending with that block.
• State Representation:
Let `maxHeight(i)` represent the maximum height of the tower with the block at index `i` at the top.
• Recurrence Relation:
For each block `i`, determine the blocks that can be placed under it and use their maximum heights to update `maxHeight(i)`. A possible relation might be:
where is the height of block , and is true if block `j` can be stacked below block `i`.
• Base Cases:
Initially, for each block, the tower height is simply its own height: .
2. Sorting
Before applying DP, sorting the blocks often simplifies the search for valid placements. Sorting criteria typically involve prioritizing one dimension but ensuring compatibility with the stacking condition:
• Sort blocks by decreasing order of width or depth to consider larger blocks first.
3. Algorithm Complexity
Analyzing the complexity involves understanding the primary operations: Sorting (`O(n \log n)`) and dynamic programming updates (`O(n^2)`). Thus, the overall complexity is a manageable `O(n^2)`, where `n` is the number of blocks.
Example
Consider three blocks with dimensions:
- Block A: Height = 5, Width = 6, Depth = 7
- Block B: Height = 4, Width = 5, Depth = 6
- Block C: Height = 3, Width = 4, Depth = 5
We will sort these blocks by width and then apply dynamic programming:
• Block A [5, 6, 7] • Block B [4, 5, 6] • Block C [3, 4, 5] • A: 5, B: 4, C: 3 • B can stack on A -> maxHeight(B) = 4 + 5 = 9 • C can stack on B -> maxHeight(C) = 3 + 9 = 12
• Degenerate Cases: • If all blocks are of identical dimensions, the solution should trivially be the height of one block. • Space Optimization: • In many cases, the DP array can be reduced to a single dimension if previous results are not needed. • Versatile Sorting: • Some variants might require sorting by volume or other criteria, depending on the specific constraints.
Related reading
- Google Interview Find all contiguous subsequence in a given array of integers, whose sum falls in the given range. Can we do better than On2?
- Google Interview Find Crazy Distance Between Strings
- Google Maps Given a point, how to find all points at a given road distance?
- Google similar images algorithm
- GPU based algorithm on AWS Lambda
- Gradient descent convergence How to decide convergence?
- Gradient Descent for Linear Regression Exploding
- Gradient Descent in Matlab

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.