Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 474ae02

Browse files
Merge pull request youngyangyang04#1313 from xiaofei-2020/dp31
添加(0337.打家劫舍III.md):增加typescript版本
2 parents 1381390 + 2ce58ac commit 474ae02

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

‎problems/0337.打家劫舍III.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,50 @@ const rob = root => {
429429
};
430430
```
431431

432+
### TypeScript
433+
434+
> 记忆化后序遍历
435+
436+
```typescript
437+
const memory: Map<TreeNode, number> = new Map();
438+
function rob(root: TreeNode | null): number {
439+
if (root === null) return 0;
440+
if (memory.has(root)) return memory.get(root);
441+
// 不取当前节点
442+
const res1: number = rob(root.left) + rob(root.right);
443+
// 取当前节点
444+
let res2: number = root.val;
445+
if (root.left !== null) res2 += rob(root.left.left) + rob(root.left.right);
446+
if (root.right !== null) res2 += rob(root.right.left) + rob(root.right.right);
447+
const res: number = Math.max(res1, res2);
448+
memory.set(root, res);
449+
return res;
450+
};
451+
```
452+
453+
> 状态标记化后序遍历
454+
455+
```typescript
456+
function rob(root: TreeNode | null): number {
457+
return Math.max(...robNode(root));
458+
};
459+
// [0]-不偷当前节点能获得的最大金额; [1]-偷~~
460+
type MaxValueArr = [number, number];
461+
function robNode(node: TreeNode | null): MaxValueArr {
462+
if (node === null) return [0, 0];
463+
const leftArr: MaxValueArr = robNode(node.left);
464+
const rightArr: MaxValueArr = robNode(node.right);
465+
// 不偷
466+
const val1: number = Math.max(leftArr[0], leftArr[1]) +
467+
Math.max(rightArr[0], rightArr[1]);
468+
//
469+
const val2: number = leftArr[0] + rightArr[0] + node.val;
470+
return [val1, val2];
471+
}
472+
```
473+
432474
### Go
475+
433476
```go
434477
// 打家劫舍III 动态规划
435478
// 时间复杂度O(n) 空间复杂度O(logn)

0 commit comments

Comments
(0)

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