Leetcode 337 打家劫舍 III
解题思路在于helper函数的定义,代表了考虑当前房屋(root)之后所能带来的收益,返回值包括了抢(do)与不抢(not do)当前房屋的数值(数组的0和1)
如果决定抢当前房屋则不考虑左右节点,如果不抢则分别考虑左右节点中抢与不抢结果大的值,然后相加
class Solution: def rob(self, root: TreeNode) -> int: #递归暴力 #考虑root节点带来的最大收益 def helper(root): #arr[do, not_do] if not root: return [0, 0] res = [0,0] left = helper(root.left) right = helper(root.right) #root偷则孩子不偷 do = root.val + left[1] + right[1] not_do = max(left[0], left[1]) + max(right[0], right[1]) res[0] = do res[1] = not_do return res res = helper(root) return max(res[0], res[1])
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
洛谷----P2415 集合求和