給出乙個含有不重複整數元素的陣列,每個整數均大於 1。
我們用這些整數來構建二叉樹,每個整數可以使用任意次數。
其中:每個非葉結點的值應等於它的兩個子結點的值的乘積。
滿足條件的二叉樹一共有多少個?返回的結果應模除 10 ** 9 + 7。
示例 1:
輸入:示例 2:a = [2, 4]
輸出:3解釋:我們可以得到這些二叉樹:[2], [4], [4, 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,隨機指標指向它...