1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/给定条件下构造矩阵 [build-a-matrix-with-conditions].html
2022-08-29 22:05:38 +08:00

59 lines
3.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个 <strong></strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;,同时给你:</p>
<ul>
<li>一个大小为 <code>n</code>&nbsp;的二维整数数组&nbsp;<code>rowConditions</code>&nbsp;,其中&nbsp;<code>rowConditions[i] = [above<sub>i</sub>, below<sub>i</sub>]</code>&nbsp;</li>
<li>一个大小为 <code>m</code>&nbsp;的二维整数数组&nbsp;<code>colConditions</code>&nbsp;,其中&nbsp;<code>colConditions[i] = [left<sub>i</sub>, right<sub>i</sub>]</code>&nbsp;</li>
</ul>
<p>两个数组里的整数都是&nbsp;<code>1</code>&nbsp;&nbsp;<code>k</code>&nbsp;之间的数字。</p>
<p>你需要构造一个&nbsp;<code>k x k</code>&nbsp;的矩阵,<code>1</code>&nbsp;&nbsp;<code>k</code>&nbsp;每个数字需要&nbsp;<strong>恰好出现一次</strong>&nbsp;。剩余的数字都是<b>&nbsp;</b><code>0</code>&nbsp;</p>
<p>矩阵还需要满足以下条件:</p>
<ul>
<li>对于所有 <code>0</code>&nbsp;&nbsp;<code>n - 1</code>&nbsp;之间的下标&nbsp;<code>i</code>&nbsp;,数字&nbsp;<code>above<sub>i</sub></code>&nbsp;所在的 <strong></strong>&nbsp;必须在数字&nbsp;<code>below<sub>i</sub></code>&nbsp;所在行的上面。</li>
<li>对于所有 <code>0</code>&nbsp;<code>m - 1</code>&nbsp;之间的下标&nbsp;<code>i</code>&nbsp;,数字&nbsp;<code>left<sub>i</sub></code>&nbsp;所在的 <b></b>&nbsp;必须在数字&nbsp;<code>right<sub>i</sub></code>&nbsp;所在列的左边。</li>
</ul>
<p>返回满足上述要求的 <strong>任意</strong>&nbsp;矩阵。如果不存在答案,返回一个空的矩阵。</p>
<p>&nbsp;</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>&nbsp;1 在 2 的上面。
- 数字 3 在第 <strong>0</strong>&nbsp;行,数字 2 在第 <strong>2</strong>&nbsp;3 在 2 的上面。
列要求如下:
- 数字 2 在第 <strong>1</strong>&nbsp;列,数字 1 在第 <strong>2</strong>&nbsp;2 在 1 的左边。
- 数字 3 在第 <strong>0</strong>&nbsp;列,数字 2 在第 <strong>1</strong>&nbsp;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>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= k &lt;= 400</code></li>
<li><code>1 &lt;= rowConditions.length, colConditions.length &lt;= 10<sup>4</sup></code></li>
<li><code>rowConditions[i].length == colConditions[i].length == 2</code></li>
<li><code>1 &lt;= above<sub>i</sub>, below<sub>i</sub>, left<sub>i</sub>, right<sub>i</sub> &lt;= 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>