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

LeetCode 337. 打家劫舍 III

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode 337. 打家劫舍 III。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

原題鏈接:. - 力扣(LeetCode)

小偷又發(fā)現(xiàn)了一個(gè)新的可行竊的地區(qū)。這個(gè)地區(qū)只有一個(gè)入口,我們稱之為?root?。

除了?root?之外,每棟房子有且只有一個(gè)“父“房子與之相連。一番偵察之后,聰明的小偷意識(shí)到“這個(gè)地方的所有房屋的排列類似于一棵二叉樹”。 如果?兩個(gè)直接相連的房子在同一天晚上被打劫?,房屋將自動(dòng)報(bào)警。

給定二叉樹的?root?。返回?在不觸動(dòng)警報(bào)的情況下?,小偷能夠盜取的最高金額?。

示例 1:

LeetCode 337. 打家劫舍 III,leetcode,算法,職場和發(fā)展

輸入: root = [3,2,3,null,3,null,1]
輸出: 7 
解釋:?小偷一晚能夠盜取的最高金額 3 + 3 + 1 = 7

示例 2:

LeetCode 337. 打家劫舍 III,leetcode,算法,職場和發(fā)展

輸入: root = [3,4,5,1,3,null,1]
輸出: 9
解釋:?小偷一晚能夠盜取的最高金額 4 + 5 = 9

提示:

  • 樹的節(jié)點(diǎn)數(shù)在?[1, ]?范圍內(nèi)
  • 0 <= Node.val <=

思路:

本題是一道 樹形 DP 類的題目。需要熟悉二叉樹的遍歷和動(dòng)態(tài)規(guī)劃的知識(shí)。由于每個(gè)節(jié)點(diǎn)都需要根據(jù)其子節(jié)點(diǎn)來判斷當(dāng)前狀態(tài)(偷或者不偷),因此本題采用后序遍歷。動(dòng)態(tài)規(guī)劃的 dp 數(shù)組可以僅是一個(gè) int [ ] 數(shù)組,為每一個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)這樣的 dp 數(shù)組(通過遞歸創(chuàng)建)。數(shù)組里面只有兩個(gè)值,dp [ 0 ] 表示偷當(dāng)前節(jié)點(diǎn)所能獲得的最高金額,dp [ 1 ] 表示不偷當(dāng)前節(jié)點(diǎn)所能獲得的最高金額。 下面是遞歸函數(shù)的寫法:

  • 確定函數(shù)的返回值和參數(shù):返回值是 動(dòng)態(tài)規(guī)劃的數(shù)組 res,參數(shù)是當(dāng)前節(jié)點(diǎn)。
  • 終止條件:當(dāng)遇到葉子節(jié)點(diǎn)的子節(jié)點(diǎn)時(shí),返回一個(gè) 默認(rèn)值為 0 的 res 數(shù)組,表示當(dāng)前節(jié)點(diǎn)無論偷還是不偷所能獲取的最高金額都是 0 。
  • 單層處理邏輯:首先獲取左子節(jié)點(diǎn)的狀態(tài)數(shù)組 leftVal(偷或者不偷所能帶來的最高金額),再獲取右子節(jié)點(diǎn)的狀態(tài)數(shù)組 rightVal 。最后根據(jù)左右子節(jié)點(diǎn)的狀態(tài)來決定當(dāng)前節(jié)點(diǎn)的狀態(tài)數(shù)組 res。res[ 0 ] 表示偷當(dāng)前節(jié)點(diǎn)所能帶來的最高金額,當(dāng)偷當(dāng)前節(jié)點(diǎn)時(shí),那么這時(shí)不能偷左右子節(jié)點(diǎn),因此偷當(dāng)前節(jié)點(diǎn)所能帶來的最高金額為 res[ 0 ] = root.val + leftVal [ 1 ]?+ rightVal [ 1 ]。res[ 1 ] 表示不偷當(dāng)前節(jié)點(diǎn)所能帶來的最高金額,當(dāng)不偷當(dāng)前節(jié)點(diǎn)時(shí),那么這時(shí)是否偷左右子節(jié)點(diǎn),就是由左右子節(jié)點(diǎn)的狀態(tài)決定的了。res[ 1 ] 為左子節(jié)點(diǎn)的最大金額加上右子節(jié)點(diǎn)的最大金額。res[1]=Math.max(leftVal[0],leftVal[1])+Math.max(rightVal[0],rightVal[1]);

最后 獲取根節(jié)點(diǎn)的 狀態(tài)數(shù)組 res,然后返回 res 數(shù)組中的最大值即可。

代碼:

class Solution {
    public int rob(TreeNode root) {
        int[] res = new int[2];
        res = robTree(root);
        return Math.max(res[0],res[1]);
    }
    public int[] robTree(TreeNode root){
        int[] res = new int[2];
        if(root==null){
            return res;
        }
        int[] leftVal = robTree(root.left);
        int[] rightVal = robTree(root.right);
        //res[0]表示偷當(dāng)前節(jié)點(diǎn),所能盜取的最高金額
        //res[1]表示不偷當(dāng)前節(jié)點(diǎn),所能盜取的最高金額
        res[0]= root.val+leftVal[1]+rightVal[1];//偷當(dāng)前節(jié)點(diǎn),則其子節(jié)點(diǎn)不能偷
        //不偷當(dāng)前節(jié)點(diǎn),則其子節(jié)點(diǎn)可偷可不偷,由子節(jié)點(diǎn)偷或者不偷能帶來的最高金額決定
        res[1]=Math.max(leftVal[0],leftVal[1])+Math.max(rightVal[0],rightVal[1]);
        return res;
    }
}

參考:動(dòng)態(tài)規(guī)劃,房間連成樹了,偷不偷呢?| LeetCode:337.打家劫舍3_嗶哩嗶哩_bilibili文章來源地址http://www.zghlxwxcb.cn/news/detail-852442.html

到了這里,關(guān)于LeetCode 337. 打家劫舍 III的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 打家劫舍 III

    打家劫舍 III

    打家劫舍 III 如果 兩個(gè)直接相連的房子在同一天晚上被打劫 ,房屋將自動(dòng)報(bào)警 返回 在不觸動(dòng)警報(bào)的情況下 ,小偷能夠盜取的最高金額 記憶化 + 解決重復(fù)子問題解決本題,在任意一個(gè)位置,小偷可以選擇打劫該房屋和不打劫該房屋,如果打劫,則不能打劫該節(jié)點(diǎn)下的子節(jié)點(diǎn)

    2024年02月09日
    瀏覽(14)
  • LeetCode - 198 打家劫舍

    LeetCode - 198 打家劫舍

    目錄 題目來源 題目描述 示例 提示 題目解析 算法源碼 題目來源 198. 打家劫舍 - 力扣(LeetCode) 題目描述 你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在

    2023年04月08日
    瀏覽(19)
  • LeetCode198.打家劫舍

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng), 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組, 計(jì)算你 不觸動(dòng)

    2024年03月12日
    瀏覽(23)
  • 【算法|動(dòng)態(tài)規(guī)劃No.10】leetcode LCR 089. 打家劫舍 & LCR 090. 打家劫舍 II

    【算法|動(dòng)態(tài)規(guī)劃No.10】leetcode LCR 089. 打家劫舍 & LCR 090. 打家劫舍 II

    個(gè)人主頁:兜里有顆棉花糖 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【LeetCode】 ??本專欄旨在提高自己算法能力的同時(shí),記錄一下自己的學(xué)習(xí)過程,希望對大家有所幫助 ??希望我們一起努力、成長,共同進(jìn)步。

    2024年01月20日
    瀏覽(22)
  • leetcode 打家劫舍(dp)

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組,計(jì)算你 不觸動(dòng)

    2024年02月08日
    瀏覽(17)
  • leetcode 213. 打家劫舍 II

    leetcode 213. 打家劫舍 II

    ? ? ? ? ?本題是?打家劫舍?的進(jìn)階版,房屋之間形成一個(gè)環(huán)了,也就是第一個(gè)房屋和最后一個(gè)房屋不能一起偷了。那么能偷的情況分為下列三種: 不考慮偷首房間。 不考慮偷尾房間。 不考慮偷首尾房間。 ? ? ? ? 第三種情況包含于第一和第二種情況了,所以分別為第一種

    2024年02月12日
    瀏覽(26)
  • leetcode 2560. 打家劫舍 IV

    2560.?打家劫舍 IV 沿街有一排連續(xù)的房屋。每間房屋內(nèi)都藏有一定的現(xiàn)金。現(xiàn)在有一位小偷計(jì)劃從這些房屋中竊取現(xiàn)金。 由于相鄰的房屋裝有相互連通的防盜系統(tǒng),所以小偷? 不會(huì)竊取相鄰的房屋 ?。 小偷的? 竊取能力 ?定義為他在竊取過程中能從單間房屋中竊取的? 最大金

    2024年02月07日
    瀏覽(20)
  • leetcode hot100 打家劫舍

    leetcode hot100 打家劫舍

    本題中,依舊可以發(fā)現(xiàn),當(dāng)前位置的金額受到前兩個(gè)位置金額是否被偷的影響,所以這明顯是動(dòng)態(tài)規(guī)劃的問題。 我們采用動(dòng)態(tài)規(guī)劃五部曲來進(jìn)行做 首先我們確定dp數(shù)組的含義:考慮下標(biāo)i(包括i)以內(nèi)的房屋,最多可以偷竊的金額為dp[i]。 注意,這里是考慮!那么就說明我這

    2024年02月19日
    瀏覽(16)
  • leetcode-打家劫舍專題系列(動(dòng)態(tài)規(guī)劃)

    leetcode-打家劫舍專題系列(動(dòng)態(tài)規(guī)劃)

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組,計(jì)算你 不觸動(dòng)

    2024年04月14日
    瀏覽(24)
  • 【LeetCode熱題100】198. 打家劫舍(動(dòng)態(tài)規(guī)劃)

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng), 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組,計(jì)算你 不觸動(dòng)

    2024年04月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包