From 6c10132bde00d669c3a25d687abedc45f6d588ba Mon Sep 17 00:00:00 2001 From: yyj08070631 <934780820@qq.com> Date: 2023年6月14日 17:46:39 +0800 Subject: [PATCH] [fix][typescript] house-robber-iii (#1406) * [fix][typescript] house-robber-iii * [fix][javascript] house-robber-iii * [fix][javascript] house-robber-iii * [fix][javascript] house-robber-iii --- .../solution_code.md" | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git "a/345円244円232円350円257円255円350円250円200円350円247円243円346円263円225円344円273円243円347円240円201円/solution_code.md" "b/345円244円232円350円257円255円350円250円200円350円247円243円346円263円225円344円273円243円347円240円201円/solution_code.md" index 4c2974c2c7..d2f6040fd2 100644 --- "a/345円244円232円350円257円255円350円250円200円350円247円243円346円263円225円344円273円243円347円240円201円/solution_code.md" +++ "b/345円244円232円350円257円255円350円250円200円350円247円243円346円263円225円344円273円243円347円240円201円/solution_code.md" @@ -28924,27 +28924,31 @@ class Solution { ```javascript // by chatGPT (javascript) var rob = function(root) { + // memo 需要提到函数外侧,否则每次递归重新声明 memo,相当于备忘录没有生效 const memo = new Map(); - if (root === null) { - return 0; + let dp = (node) => { + if (node === null) { + return 0; + } + // 利用备忘录消除重叠子问题 + if (memo.has(node)) { + return memo.get(node); + } + // 抢,然后去下下家 + let do_it = node.val + + ((node.left === null) ? + 0 : + dp(node.left.left) + dp(node.left.right)) + + ((node.right === null) ? + 0 : + dp(node.right.left) + dp(node.right.right)); + // 不抢,然后去下家 + let not_do = dp(node.left) + dp(node.right); + let res = Math.max(do_it, not_do); + memo.set(node, res); + return res; } - // 利用备忘录消除重叠子问题 - if (memo.has(root)) { - return memo.get(root); - } - // 抢,然后去下下家 - let do_it = root.val + - ((root.left === null) ? - 0 : - rob(root.left.left) + rob(root.left.right)) + - ((root.right === null) ? - 0 : - rob(root.right.left) + rob(root.right.right)); - // 不抢,然后去下家 - let not_do = rob(root.left) + rob(root.right); - let res = Math.max(do_it, not_do); - memo.set(root, res); - return res; + return dp(root) }; ```

AltStyle によって変換されたページ (->オリジナル) /