LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個數組 nums 表示 1 到 n 的一個排列。
我們按照元素在 nums 中的順序依次插入一個初始為空的二叉查找樹(BST)。
請你統計將 nums 重新排序后,統計滿足如下條件的方案數:重排后得到的二叉查找樹與 nums 原本數字順序得到的二叉查找樹相同。
比方說,給你 nums = [2,1,3],我們得到一棵 2 為根,1 為左孩子,3 為右孩子的樹。
數組 [2,3,1] 也能得到相同的 BST,但 [3,2,1] 會得到一棵不同的 BST 。
請你返回重排 nums 后,與原數組 nums 得到相同二叉查找樹的方案數。
由于答案可能會很大,請將結果對 10^9 + 7 取余數。
示例 1:
示例 2:
示例 3:
示例 4:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/number-of-ways-to-reorder-array-to-get-same-bst
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 根節點是數組第一個數
- 然后分為左右兩個子樹,左右子樹之間的順序不亂就可以
- 假設左子樹 L 長度 nL,右子樹 R 長度 nR,存在方案數為 CnL+nRnL?f(L)?f(R)C_{nL+nR}^{nL}*f(L)*f(R)CnL+nRnL??f(L)?f(R)
424 ms 172.5 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 755. 倒水(模拟)
- 下一篇: LeetCode 1727. 重新排列后