Build a Matrix With Conditions
The key idea
Problem
You are given a positive integer k. You are also given:
- a 2D integer array rowConditions of size n where rowConditions[i] = [above_i, below_i], and
- a 2D integer array colConditions of size m where colConditions[i] = [left_i, right_i].
The two arrays contain integers from 1 to k.
You have to build a k x k matrix that contains each of the numbers from 1 to k exactly once. The remaining cells should have the value 0.
The matrix should also satisfy the following conditions:
- The number above_i should appear in a row that is strictly above the row that contains the number below_i for all i from 0 to n - 1.
- The number left_i should appear in a column that is strictly left of the column that contains the number right_i for all i from 0 to m - 1.
Return any matrix that satisfies the conditions. If no answer exists, return an empty matrix.
Constraints
2 <= k <= 4001 <= rowConditions.length, colConditions.length <= 10^4rowConditions[i].length == colConditions[i].length == 21 <= above_i, below_i, left_i, right_i <= kabove_i != below_ileft_i != right_i
Examples
Complexity
Time: O(k + R + C) Space: O(k + R + C)
See the full solution
- ✓Full worked approach
- ✓Reference code in 5 languages
- ✓Problem-solving tips
- ✓Step-by-step animated visualization
More Topological Sort problems
- Alien DictionaryHARD
- Course ScheduleMEDIUM
- Course Schedule IIMEDIUM