mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
95 lines
3.7 KiB
HTML
95 lines
3.7 KiB
HTML
|
<p>给你一个整数 <code>n</code> 和一个二维数组 <code>requirements</code> ,其中 <code>requirements[i] = [end<sub>i</sub>, cnt<sub>i</sub>]</code> <span class="text-only" data-eleid="10" style="white-space: pre;">表示这个要求中的末尾下标和 <strong>逆序对</strong> 的数目。</span></p>
|
|||
|
|
|||
|
<p>整数数组 <code>nums</code> 中一个下标对 <code>(i, j)</code> 如果满足以下条件,那么它们被称为一个 <strong>逆序对</strong> :</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>i < j</code> 且 <code>nums[i] > nums[j]</code></li>
|
|||
|
</ul>
|
|||
|
|
|||
|
<p>请你返回 <code>[0, 1, 2, ..., n - 1]</code> 的 <span data-keyword="permutation">排列</span> <code>perm</code> 的数目,满足对 <strong>所有</strong> 的 <code>requirements[i]</code> 都有 <code>perm[0..end<sub>i</sub>]</code> 恰好有 <code>cnt<sub>i</sub></code> 个逆序对。</p>
|
|||
|
|
|||
|
<p>由于答案可能会很大,将它对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 后返回。</p>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p><strong class="example">示例 1:</strong></p>
|
|||
|
|
|||
|
<div class="example-block">
|
|||
|
<p><span class="example-io"><b>输入:</b>n = 3, requirements = [[2,2],[0,0]]</span></p>
|
|||
|
|
|||
|
<p><span class="example-io"><b>输出:</b>2</span></p>
|
|||
|
|
|||
|
<p><strong>解释:</strong></p>
|
|||
|
|
|||
|
<p>两个排列为:</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>[2, 0, 1]</code>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li>前缀 <code>[2, 0, 1]</code> 的逆序对为 <code>(0, 1)</code> 和 <code>(0, 2)</code> 。</li>
|
|||
|
<li>前缀 <code>[2]</code> 的逆序对数目为 0 个。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><code>[1, 2, 0]</code>
|
|||
|
<ul>
|
|||
|
<li>前缀 <code>[1, 2, 0]</code> 的逆序对为 <code>(0, 2)</code> 和 <code>(1, 2)</code> 。</li>
|
|||
|
<li>前缀 <code>[1]</code> 的逆序对数目为 0 个。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
|
|||
|
<p><strong class="example">示例 2:</strong></p>
|
|||
|
|
|||
|
<div class="example-block">
|
|||
|
<p><span class="example-io"><b>输入:</b>n = 3, requirements = [[2,2],[1,1],[0,0]]</span></p>
|
|||
|
|
|||
|
<p><b>输出:</b>1</p>
|
|||
|
|
|||
|
<p><strong>解释:</strong></p>
|
|||
|
|
|||
|
<p>唯一满足要求的排列是 <code>[2, 0, 1]</code> :</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li>前缀 <code>[2, 0, 1]</code> 的逆序对为 <code>(0, 1)</code> 和 <code>(0, 2)</code> 。</li>
|
|||
|
<li>前缀 <code>[2, 0]</code> 的逆序对为 <code>(0, 1)</code> 。</li>
|
|||
|
<li>前缀 <code>[2]</code> 的逆序对数目为 0 。</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
|
|||
|
<p><strong class="example">示例 3:</strong></p>
|
|||
|
|
|||
|
<div class="example-block">
|
|||
|
<p><span class="example-io"><b>输入:</b>n = 2, requirements = [[0,0],[1,0]]</span></p>
|
|||
|
|
|||
|
<p><span class="example-io"><b>输出:</b>1</span></p>
|
|||
|
|
|||
|
<p><b>解释:</b></p>
|
|||
|
|
|||
|
<p>唯一满足要求的排列为 <code>[0, 1]</code> :</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li>前缀 <code>[0]</code> 的逆序对数目为 0 。</li>
|
|||
|
<li>前缀 <code>[0, 1]</code> 的逆序对为 <code>(0, 1)</code> 。</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="gtx-trans" style="position: absolute; left: 198px; top: 756px;">
|
|||
|
<div class="gtx-trans-icon"> </div>
|
|||
|
</div>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p><strong>提示:</strong></p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>2 <= n <= 300</code></li>
|
|||
|
<li><code>1 <= requirements.length <= n</code></li>
|
|||
|
<li><code>requirements[i] = [end<sub>i</sub>, cnt<sub>i</sub>]</code></li>
|
|||
|
<li><code>0 <= end<sub>i</sub> <= n - 1</code></li>
|
|||
|
<li><code>0 <= cnt<sub>i</sub> <= 400</code></li>
|
|||
|
<li>输入保证至少有一个 <code>i</code> 满足 <code>end<sub>i</sub> == n - 1</code> 。</li>
|
|||
|
<li>输入保证所有的 <code>end<sub>i</sub></code> 互不相同。</li>
|
|||
|
</ul>
|