From 2ce58ac6756775f8ec5139b36a23e8f3de232d30 Mon Sep 17 00:00:00 2001
From: Steve2020 <841532108@qq.com>
Date: 2022年5月12日 12:55:14 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=880337.=E6=89=93?=
=?UTF-8?q?=E5=AE=B6=E5=8A=AB=E8=88=8DIII.md=EF=BC=89=EF=BC=9A=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0typescript=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...345256円266円345円212円253円350円210円215円III.md" | 43 +++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git "a/problems/0337.346円211円223円345円256円266円345円212円253円350円210円215円III.md" "b/problems/0337.346円211円223円345円256円266円345円212円253円350円210円215円III.md"
index a4d8f6b280..6f50723d8f 100644
--- "a/problems/0337.346円211円223円345円256円266円345円212円253円350円210円215円III.md"
+++ "b/problems/0337.346円211円223円345円256円266円345円212円253円350円210円215円III.md"
@@ -429,7 +429,50 @@ const rob = root => {
};
```
+### TypeScript
+
+> 记忆化后序遍历
+
+```typescript
+const memory: Map
= new Map();
+function rob(root: TreeNode | null): number {
+ if (root === null) return 0;
+ if (memory.has(root)) return memory.get(root);
+ // 不取当前节点
+ const res1: number = rob(root.left) + rob(root.right);
+ // 取当前节点
+ let res2: number = root.val;
+ if (root.left !== null) res2 += rob(root.left.left) + rob(root.left.right);
+ if (root.right !== null) res2 += rob(root.right.left) + rob(root.right.right);
+ const res: number = Math.max(res1, res2);
+ memory.set(root, res);
+ return res;
+};
+```
+
+> 状态标记化后序遍历
+
+```typescript
+function rob(root: TreeNode | null): number {
+ return Math.max(...robNode(root));
+};
+// [0]-不偷当前节点能获得的最大金额; [1]-偷~~
+type MaxValueArr = [number, number];
+function robNode(node: TreeNode | null): MaxValueArr {
+ if (node === null) return [0, 0];
+ const leftArr: MaxValueArr = robNode(node.left);
+ const rightArr: MaxValueArr = robNode(node.right);
+ // 不偷
+ const val1: number = Math.max(leftArr[0], leftArr[1]) +
+ Math.max(rightArr[0], rightArr[1]);
+ // 偷
+ const val2: number = leftArr[0] + rightArr[0] + node.val;
+ return [val1, val2];
+}
+```
+
### Go
+
```go
// 打家劫舍III 动态规划
// 时间复杂度O(n) 空间复杂度O(logn)