題目描述:
給出乙個含有不重複整數元素的陣列,每個整數均大於 1。
我們用這些整數來構建二叉樹,每個整數可以使用任意次數。
其中:每個非葉結點的值應等於它的兩個子結點的值的乘積。
滿足條件的二叉樹一共有多少個?返回的結果應模除 10 ** 9 + 7。
示例 1:
輸入: a = [2, 4]
輸出: 3
解釋: 我們可以得到這些二叉樹: [2], [4], [4, 2, 2]
示例 2:
輸入: a = [2, 4, 5, 10]
輸出: 7
解釋: 我們可以得到這些二叉樹: [2], [4], [5], [10], [4, 2, 2], [10, 2, 5], [10, 5, 2].
1 <= a.length <= 1000.
2 <= a[i] <= 10 ^ 9.
方法1:
(1)動態規劃;
(2)dp[ i ]表示以arr中的第 i 個數字作為根節點時,可以有的二叉樹的數量,若 arr[ j ] * arr[ k ]==arr[ i ],則dp[ i ]=dp[ j ]*dp[ k ];
(3)索引和arr數字之間的對映關係可以使用unordered_map獲得;
class
solution
vector<
long
>
dp(arr.
size()
,1);
//初始化動態陣列
long res=1;
for(
int i=
1;isize()
;++i)
} res+
=dp[i]
;//統計當前數字
}return res%
1000000007;}
};
823 帶因子的二叉樹
做這題我的心中是十分難受的,sad,花了4個小時,沒有通過。主要是遇到這個測試點過不了。我覺得是取餘那一塊有點問題,但自認為邏輯是沒有錯的。也就是下面的 是沒有ac的 給出乙個含有不重複整數元素的陣列,每個整數均大於 1。我們用這些整數來構建二叉樹,每個整數可以使用任意次數。其中 每個非葉結點的值應...
Leetcode 823 帶因子的二叉樹
給出乙個含有不重複整數元素的陣列,每個整數均大於 1。我們用這些整數來構建二叉樹,每個整數可以使用任意次數。其中 每個非葉結點的值應等於它的兩個子結點的值的乘積。滿足條件的二叉樹一共有多少個?返回的結果應模除 10 9 7。示例 1 輸入 a 2,4 輸出 3解釋 我們可以得到這些二叉樹 2 4 4...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...