国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

2023-08-29 LeetCode(帶因子的二叉樹)

這篇具有很好參考價(jià)值的文章主要介紹了2023-08-29 LeetCode(帶因子的二叉樹)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

2023-08-29每日一題

一、題目編號(hào)

823. 帶因子的二叉樹

二、題目鏈接

點(diǎn)擊跳轉(zhuǎn)到題目位置

三、題目描述

給出一個(gè)含有不重復(fù)整數(shù)元素的數(shù)組 arr ,每個(gè)整數(shù) arr[i] 均大于 1。

用這些整數(shù)來(lái)構(gòu)建二叉樹,每個(gè)整數(shù)可以使用任意次數(shù)。其中:每個(gè)非葉結(jié)點(diǎn)的值應(yīng)等于它的兩個(gè)子結(jié)點(diǎn)的值的乘積。

滿足條件的二叉樹一共有多少個(gè)?答案可能很大,返回 對(duì) 109 + 7 取余 的結(jié)果。

示例 1:
2023-08-29 LeetCode(帶因子的二叉樹),LeetCode每日一題,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)
示例 2:
2023-08-29 LeetCode(帶因子的二叉樹),LeetCode每日一題,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)
提示:

  • 1 <= arr.length <= 1000
  • 2 <= arr[i] <= 109
  • arr 中的所有值 互不相同

四、解題代碼

class Solution {
    const int mod = 1e9 + 7;
public:
    int numFactoredBinaryTrees(vector<int>& arr) {
        sort(arr.begin(), arr.end());
        int n = arr.size();
        vector<long long> dp(n);
        long long res = 0;
        for(int i = 0; i < n; ++i){
            dp[i] = 1;
            int left = 0;
            int right = i - 1;
            while(left <= right){
                while(right >= left && (long long)arr[left] * arr[right] > arr[i]){
                    --right;
                }
                if(right >= left && (long long)arr[left] * arr[right] == arr[i]){
                    if(right > left){
                        dp[i] = (dp[i] + dp[left] * dp[right] * 2) % mod;
                    } else{
                        dp[i] = (dp[i] + dp[left] * dp[right]) % mod;
                    }
                }
                ++left;
            }
            res = (res + dp[i]) % mod;
        }
    return res;
    }
};

五、解題思路

(1) 使用動(dòng)態(tài)規(guī)劃來(lái)解決問(wèn)題。首先將arr按照從小到大來(lái)進(jìn)行排序。設(shè)置狀態(tài),dp[i]表示以arr數(shù)組下標(biāo)為i的結(jié)點(diǎn)為根結(jié)點(diǎn)的樹有多少種。

(2) 利用雙指針,left 等于 0, right 等于 i - 1, i為數(shù)組遍歷到的下標(biāo)。然后如果arr[left] * arr[right] 等于 arr[i] 的話,如果left等于right,那么dp[i] 應(yīng)當(dāng)加上 dp[left] 乘以 dp[right]。如果left 不等于 right,dp[i] 應(yīng)當(dāng)加上dp[left] 乘以 dp[right] 乘以 2。

(3) 因?yàn)榻Y(jié)果較大,不要忘記進(jìn)行取模運(yùn)算。

(4) 最后返回結(jié)果即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-683243.html

到了這里,關(guān)于2023-08-29 LeetCode(帶因子的二叉樹)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ?LeetCode解法匯總823. 帶因子的二叉樹

    https://github.com/September26/java-algorithms 給出一個(gè)含有不重復(fù)整數(shù)元素的數(shù)組? arr ?,每個(gè)整數(shù)? arr[i] ?均大于 1。 用這些整數(shù)來(lái)構(gòu)建二叉樹,每個(gè)整數(shù)可以使用任意次數(shù)。其中:每個(gè)非葉結(jié)點(diǎn)的值應(yīng)等于它的兩個(gè)子結(jié)點(diǎn)的值的乘積。 滿足條件的二叉樹一共有多少個(gè)?答案可能很

    2024年02月10日
    瀏覽(19)
  • 每日一題——對(duì)稱的二叉樹

    每日一題——對(duì)稱的二叉樹

    題目 給定一棵二叉樹,判斷其是否是自身的鏡像(即:是否對(duì)稱) 例如: 下面這棵二叉樹是對(duì)稱的 下面這棵二叉樹不對(duì)稱。 數(shù)據(jù)范圍:節(jié)點(diǎn)數(shù)滿足 0≤n≤1000,節(jié)點(diǎn)上的值滿足 ∣val∣≤1000 要求:空間復(fù)雜度 O(n),時(shí)間復(fù)雜度 O(n) 參數(shù)說(shuō)明:二叉樹類,二叉樹序列化是通過(guò)

    2024年02月13日
    瀏覽(18)
  • leetcode 823. 帶因子的二叉樹(dp+雙指針+Long類型)

    leetcode 823. 帶因子的二叉樹(dp+雙指針+Long類型)

    題目表述 給出一個(gè)含有不重復(fù)整數(shù)元素的數(shù)組 arr ,每個(gè)整數(shù) arr[i] 均大于 1。 用這些整數(shù)來(lái)構(gòu)建二叉樹,每個(gè)整數(shù)可以使用任意次數(shù)。其中:每個(gè)非葉結(jié)點(diǎn)的值應(yīng)等于它的兩個(gè)子結(jié)點(diǎn)的值的乘積。 滿足條件的二叉樹一共有多少個(gè)?答案可能很大,返回 對(duì) 1 0 9 + 7 10^9+7 1 0 9

    2024年02月10日
    瀏覽(19)
  • 2023-08-29力扣每日一題

    鏈接: 823. 帶因子的二叉樹 題意: 用給的數(shù)字建二叉樹,要求父節(jié)點(diǎn)是子節(jié)點(diǎn)的乘積 解: 樂(lè)了 1500ms+30MB //注釋版120ms+18MB 實(shí)際代碼: 限制: 1 = arr.length = 1000 2 = arr[i] = 109 arr 中的所有值 互不相同

    2024年02月11日
    瀏覽(24)
  • Leetcode每日一題:1448. 統(tǒng)計(jì)二叉樹中好節(jié)點(diǎn)的數(shù)目(2023.8.25 C++)

    Leetcode每日一題:1448. 統(tǒng)計(jì)二叉樹中好節(jié)點(diǎn)的數(shù)目(2023.8.25 C++)

    目錄 1448. 統(tǒng)計(jì)二叉樹中好節(jié)點(diǎn)的數(shù)目 題目描述: 實(shí)現(xiàn)代碼與解析: dfs 原理思路: ????????給你一棵根為? root ?的二叉樹,請(qǐng)你返回二叉樹中好節(jié)點(diǎn)的數(shù)目。 「好節(jié)點(diǎn)」X 定義為:從根到該節(jié)點(diǎn) X 所經(jīng)過(guò)的節(jié)點(diǎn)中,沒(méi)有任何節(jié)點(diǎn)的值大于 X 的值。 示例 1: 示例 2: 示例

    2024年02月11日
    瀏覽(19)
  • 2023-07-29 LeetCode每日一題(環(huán)形鏈表)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個(gè)鏈表的頭節(jié)點(diǎn) head ,判斷鏈表中是否有環(huán)。 如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過(guò)連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評(píng)測(cè)系統(tǒng)內(nèi)部使用整數(shù) pos 來(lái)表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。注意:p

    2024年02月15日
    瀏覽(27)
  • 823.帶因子的二叉樹

    題目 示例 提示 思路 題目中要的是 父親節(jié)點(diǎn)的val = 左孩子.val * 右孩子的val , 根據(jù)題目的意思,單節(jié)點(diǎn)也算 c = b*a ,所有看看能不能枚舉c =》是可以枚舉的,將原有數(shù)組進(jìn)行排序( 升序 ) 當(dāng)枚舉到下標(biāo)的i的時(shí)候,有多少種呢?這里有一個(gè)dp數(shù)組來(lái)做存儲(chǔ) 定義dp數(shù)組 long[]

    2024年02月10日
    瀏覽(24)
  • 2023-08-28 LeetCode每日一題(插入?yún)^(qū)間)

    2023-08-28 LeetCode每日一題(插入?yún)^(qū)間)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個(gè) 無(wú)重疊的 ,按照區(qū)間起始端點(diǎn)排序的區(qū)間列表。 在列表中插入一個(gè)新的區(qū)間,你需要確保列表中的區(qū)間仍然有序且不重疊(如果有必要的話,可以合并區(qū)間)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 10 4 interval

    2024年02月11日
    瀏覽(28)
  • 2023-08-27 LeetCode每日一題(合并區(qū)間)

    2023-08-27 LeetCode每日一題(合并區(qū)間)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 以數(shù)組 intervals 表示若干個(gè)區(qū)間的集合,其中單個(gè)區(qū)間為 intervals[i] = [starti, endi] 。請(qǐng)你合并所有重疊的區(qū)間,并返回 一個(gè)不重疊的區(qū)間數(shù)組,該數(shù)組需恰好覆蓋輸入中的所有區(qū)間 。 示例 1: 示例 2: 提示: 1 = intervals.length = 10 4 intervals[i].length == 2 0 = s

    2024年02月10日
    瀏覽(27)
  • 2023-08-01 LeetCode每日一題(英雄的力量)

    2023-08-01 LeetCode每日一題(英雄的力量)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個(gè)下標(biāo)從 0 開始的整數(shù)數(shù)組 nums ,它表示英雄的能力值。如果我們選出一部分英雄,這組英雄的 力量 定義為: i 0 ,i 1 ,… i k 表示這組英雄在數(shù)組中的下標(biāo)。那么這組英雄的力量為 max(nums[i0],nums[i1] … nums[ik])2 * min(nums[i0],nums[i1] … nums[ik]) 。 請(qǐng)你

    2024年02月14日
    瀏覽(54)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包