Leetcode 823 帶因子的二叉樹

2021-09-06 14:28:41 字數 1135 閱讀 3886

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

解題思路:

動態規劃。假設dp[i]為以數字i為根結點的所有樹的總量。

當i=a*b,a,b都出現在陣列中時,dp[i]+=2*dp[a]*dp[b]。因為子樹可以交換位置

當i=a*a時,a出現在陣列中時,dp[i]+=dp[a]*dp[b]。

其餘條件dp[i]=1,因此可以將dp的所有元素初始化為1。

最終的返回結果是dp中所有元素的和。

注意事項:

注意數的範圍,每個數最大值10^9,最多1000個,因此用乙個long 型資料就夠了。

823 帶因子的二叉樹

題目描述 給出乙個含有不重複整數元素的陣列,每個整數均大於 1。我們用這些整數來構建二叉樹,每個整數可以使用任意次數。其中 每個非葉結點的值應等於它的兩個子結點的值的乘積。滿足條件的二叉樹一共有多少個?返回的結果應模除 10 9 7。示例 1 輸入 a 2,4 輸出 3 解釋 我們可以得到這些二叉樹...

823 帶因子的二叉樹

做這題我的心中是十分難受的,sad,花了4個小時,沒有通過。主要是遇到這個測試點過不了。我覺得是取餘那一塊有點問題,但自認為邏輯是沒有錯的。也就是下面的 是沒有ac的 給出乙個含有不重複整數元素的陣列,每個整數均大於 1。我們用這些整數來構建二叉樹,每個整數可以使用任意次數。其中 每個非葉結點的值應...

LeetCode 複製帶隨機指標的鍊錶

給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深拷貝。示例 輸入 val 2 random val 1 解釋 節點 1 的值是 1,它的下乙個指標和隨機指標都指向節點 2 節點 2 的值是 2,它的下乙個指標指向 null,隨機指標指向它...