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)/将子数组重新排序得到同一个二叉查找树的方案数 [number-of-ways-to-reorder-array-to-get-same-bst].html

67 lines
2.9 KiB
HTML
Raw Normal View History

2022-03-27 20:45:09 +08:00
<p>给你一个数组 <code>nums</code>&nbsp;表示 <code>1</code>&nbsp;<code>n</code>&nbsp;的一个排列。我们按照元素在 <code>nums</code>&nbsp;中的顺序依次插入一个初始为空的二叉查找树BST。请你统计将 <code>nums</code>&nbsp;重新排序后,统计满足如下条件的方案数:重排后得到的二叉查找树与 <code>nums</code>&nbsp;原本数字顺序得到的二叉查找树相同。</p>
<p>比方说,给你&nbsp;<code>nums = [2,1,3]</code>,我们得到一棵 2 为根1 为左孩子3 为右孩子的树。数组&nbsp;<code>[2,3,1]</code>&nbsp;也能得到相同的 BST&nbsp;<code>[3,2,1]</code>&nbsp;会得到一棵不同的&nbsp;BST 。</p>
<p>请你返回重排 <code>nums</code>&nbsp;后,与原数组 <code>nums</code>&nbsp;得到相同二叉查找树的方案数。</p>
<p>由于答案可能会很大,请将结果对<strong>&nbsp;</strong><code>10^9 + 7</code>&nbsp;取余数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/08/30/bb.png" style="height: 101px; width: 121px;"></p>
<pre><strong>输入:</strong>nums = [2,1,3]
<strong>输出:</strong>1
<strong>解释:</strong>我们将 nums 重排, [2,3,1] 能得到相同的 BST 。没有其他得到相同 BST 的方案了。
</pre>
<p><strong>示例 2</strong></p>
<p><strong><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/08/30/ex1.png" style="height: 161px; width: 241px;"></strong></p>
<pre><strong>输入:</strong>nums = [3,4,5,1,2]
<strong>输出:</strong>5
<strong>解释:</strong>下面 5 个数组会得到相同的 BST
[3,1,2,4,5]
[3,1,4,2,5]
[3,1,4,5,2]
[3,4,1,2,5]
[3,4,1,5,2]
</pre>
<p><strong>示例 3</strong></p>
<p><strong><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/08/30/ex4.png" style="height: 161px; width: 121px;"></strong></p>
<pre><strong>输入:</strong>nums = [1,2,3]
<strong>输出:</strong>0
<strong>解释:</strong>没有别的排列顺序能得到相同的 BST 。
</pre>
<p><strong>示例 4</strong></p>
<p><strong><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/08/30/abc.png" style="height: 161px; width: 241px;"></strong></p>
<pre><strong>输入:</strong>nums = [3,1,2,5,4,6]
<strong>输出:</strong>19
</pre>
<p><strong>示例&nbsp; 5</strong></p>
<pre><strong>输入:</strong>nums = [9,4,2,1,3,6,5,7,8,14,11,10,12,13,16,15,17,18]
<strong>输出:</strong>216212978
<strong>解释:</strong>得到相同 BST 的方案数是 3216212999。将它对 10^9 + 7 取余后得到 216212978。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 1000</code></li>
<li><code>1 &lt;= nums[i] &lt;= nums.length</code></li>
<li><code>nums</code>&nbsp;中所有数 <strong>互不相同</strong>&nbsp;</li>
</ul>