騰訊面試 打家劫舍 III

2021-10-25 08:56:53 字數 973 閱讀 3332

題目:

在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為「根」。 除了「根」之外,每棟房子有且只有乙個「父「房子與之相連。一番偵察之後,聰明的小偷意識到「這個地方的所有房屋的排列類似於一棵二叉樹」。 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。

計算在不觸動警報的情況下,小偷一晚能夠盜取的最高金額。

示例 1:

輸入: [3,2,3,null,3,null,1]

3-/ \

2 3

\ \

3- 1-

輸出: 7

解釋: 小偷一晚能夠盜取的最高金額 = 3 + 3 + 1 = 7.

示例 2:

輸入: [3,4,5,1,3,null,1]

3/ \

4- 5-

/ \ \

1 3 1

輸出: 9

解釋: 小偷一晚能夠盜取的最高金額 = 4 + 5 = 9.

**是先遞迴在求dp方程,遞迴一直遞迴到底部,然後dp方程從底部一直往上求值,類似乙個彈棧過程

Leetcode 打家劫舍 III

第一道樹狀dp。第一種方法,也是最容易想到的基本的dp。乙個節點的最大錢數,就是opt left opt right 和val ll lr rl rr的最大值。這樣做的話,會增加很多搜尋的時間,時間1000ms左右 definition for a binary tree node.struct t...

LeetCode 第337題打家劫舍 III

題目描述 在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自...

LeetCode337 樹 打家劫舍 III

遞迴求解 本質上就是間隔遍歷 把問題直接簡化成兩個部分 偷父節點。那就是隔行遍歷左右節點,因為不能偷連續的節點。但是注意,隔行遍歷一定要判斷有無空指標!不偷父節點。可以畫幾個示意圖看看,不偷父節點的話就是父節點的左子樹 右子樹的值,依次加下去 最後返回乙個最大的金額 class solution i...