<p>给你一个 <strong>正</strong> 整数 <code>k</code> ,同时给你:</p> <ul> <li>一个大小为 <code>n</code> 的二维整数数组 <code>rowConditions</code> ,其中 <code>rowConditions[i] = [above<sub>i</sub>, below<sub>i</sub>]</code> 和</li> <li>一个大小为 <code>m</code> 的二维整数数组 <code>colConditions</code> ,其中 <code>colConditions[i] = [left<sub>i</sub>, right<sub>i</sub>]</code> 。</li> </ul> <p>两个数组里的整数都是 <code>1</code> 到 <code>k</code> 之间的数字。</p> <p>你需要构造一个 <code>k x k</code> 的矩阵,<code>1</code> 到 <code>k</code> 每个数字需要 <strong>恰好出现一次</strong> 。剩余的数字都是<b> </b><code>0</code> 。</p> <p>矩阵还需要满足以下条件:</p> <ul> <li>对于所有 <code>0</code> 到 <code>n - 1</code> 之间的下标 <code>i</code> ,数字 <code>above<sub>i</sub></code> 所在的 <strong>行</strong> 必须在数字 <code>below<sub>i</sub></code> 所在行的上面。</li> <li>对于所有 <code>0</code> 到 <code>m - 1</code> 之间的下标 <code>i</code> ,数字 <code>left<sub>i</sub></code> 所在的 <b>列</b> 必须在数字 <code>right<sub>i</sub></code> 所在列的左边。</li> </ul> <p>返回满足上述要求的 <strong>任意</strong> 矩阵。如果不存在答案,返回一个空的矩阵。</p> <p> </p> <p><strong>示例 1:</strong></p> <p><img alt="" src="https://assets.leetcode.com/uploads/2022/07/06/gridosdrawio.png" style="width: 211px; height: 211px;"></p> <pre><b>输入:</b>k = 3, rowConditions = [[1,2],[3,2]], colConditions = [[2,1],[3,2]] <b>输出:</b>[[3,0,0],[0,0,1],[0,2,0]] <b>解释:</b>上图为一个符合所有条件的矩阵。 行要求如下: - 数字 1 在第 <strong>1</strong> 行,数字 2 在第 <strong>2</strong> 行,1 在 2 的上面。 - 数字 3 在第 <strong>0</strong> 行,数字 2 在第 <strong>2</strong> 行,3 在 2 的上面。 列要求如下: - 数字 2 在第 <strong>1</strong> 列,数字 1 在第 <strong>2</strong> 列,2 在 1 的左边。 - 数字 3 在第 <strong>0</strong> 列,数字 2 在第 <strong>1</strong> 列,3 在 2 的左边。 注意,可能有多种正确的答案。 </pre> <p><strong>示例 2:</strong></p> <pre><b>输入:</b>k = 3, rowConditions = [[1,2],[2,3],[3,1],[2,3]], colConditions = [[2,1]] <b>输出:</b>[] <b>解释:</b>由前两个条件可以得到 3 在 1 的下面,但第三个条件是 3 在 1 的上面。 没有符合条件的矩阵存在,所以我们返回空矩阵。 </pre> <p> </p> <p><strong>提示:</strong></p> <ul> <li><code>2 <= k <= 400</code></li> <li><code>1 <= rowConditions.length, colConditions.length <= 10<sup>4</sup></code></li> <li><code>rowConditions[i].length == colConditions[i].length == 2</code></li> <li><code>1 <= above<sub>i</sub>, below<sub>i</sub>, left<sub>i</sub>, right<sub>i</sub> <= k</code></li> <li><code>above<sub>i</sub> != below<sub>i</sub></code></li> <li><code>left<sub>i</sub> != right<sub>i</sub></code></li> </ul>