823 帶因子的二叉樹

2021-10-18 23:17:20 字數 1024 閱讀 8043

題目描述:

給出乙個含有不重複整數元素的陣列,每個整數均大於 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的所在子樹...