Skip to content

Commit d6bd739

Browse files
committed
update
1 parent 8251f32 commit d6bd739

2 files changed

Lines changed: 143 additions & 39 deletions

File tree

Sumary.md

Lines changed: 0 additions & 39 deletions
This file was deleted.

Summary.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# 算法训练营总结
2+
3+
## 方法论
4+
5+
* 五毒神掌
6+
7+
* 自顶向下
8+
9+
* 熟记解题模板
10+
11+
* 不要死磕,看中英文精选评论,写简洁代码
12+
13+
## 掌握四种算法思想
14+
15+
* 分治
16+
17+
* 回溯
18+
19+
* 贪心
20+
21+
* 动态规划
22+
23+
## [算法与数据结构思维导图](https://note.youdao.com/web/#/file/WEBbdcb53f16e726debc02af4dfc624d50e/mindmap/WEBec155f49494b1031b649ce01de192962/)
24+
25+
## 最后
26+
27+
70天的算法训练营眨眼就过去了,相较以前埋头苦思独自刷题,思维有了很大的转变。 就像转魔方一样,在你眼中炫酷不可思议的操作往往有迹可循,当你了解规律,掌握模板,理解算法思想,看待问题的角度随之也发生了改变,解决问题基本也变成了一种搜索匹配的过程。
28+
29+
课程虽然结束,但是刷题不会停:
30+
31+
* 按分类刷题
32+
33+
* 重复刷题
34+
35+
* 结合实际问题进行思考
36+
37+
* 以思维导图为框架,填充内容
38+
39+
加油~~~
40+
41+
42+
43+
## 前序 + 后续
44+
45+
```javascript
46+
47+
/**
48+
* Definition for a binary tree node.
49+
* function TreeNode(val) {
50+
* this.val = val;
51+
* this.left = this.right = null;
52+
* }
53+
*/
54+
/**
55+
* @param {number[]} pre
56+
* @param {number[]} post
57+
* @return {TreeNode}
58+
*/
59+
var constructFromPrePost = function(pre, post) {
60+
return helper(pre, post, 0, pre.length - 1, 0, post.length -1)
61+
function helper(
62+
preorder, postorder, preorder_start, preorder_end, postorder_start, postorder_end) {
63+
if (preorder_start > preorder_end || postorder_start > postorder_end) return null
64+
let root = new TreeNode(preorder[preorder_start])
65+
if (preorder_start == preorder_end) return root
66+
let index = postorder_start
67+
while (preorder[preorder_start+1] != postorder[index]) index++
68+
root.left = helper(preorder, postorder, preorder_start + 1, preorder_start+1 + index - postorder_start, postorder_start, index)
69+
root.right = helper(preorder, postorder, preorder_start+1 + 1 + index - postorder_start, preorder_end, index + 1, postorder_end - 1)
70+
return root
71+
}
72+
};
73+
74+
```
75+
76+
77+
## 前序 + 中序
78+
79+
```javascript
80+
81+
/**
82+
* Definition for a binary tree node.
83+
* function TreeNode(val) {
84+
* this.val = val;
85+
* this.left = this.right = null;
86+
* }
87+
*/
88+
/**
89+
* @param {number[]} preorder
90+
* @param {number[]} inorder
91+
* @return {TreeNode}
92+
*/
93+
var buildTree = function(preorder, inorder) {
94+
return helper(preorder, inorder, 0, preorder.length - 1, 0, inorder.length -1)
95+
function helper(
96+
preorder, inorder, preorder_start, preorder_end, inorder_start, inorder_end) {
97+
if (preorder_start > preorder_end || inorder_start > inorder_end) return null
98+
let root = new TreeNode(preorder[preorder_start])
99+
if (pre_start == pre_end) return root
100+
let index = inorder_start
101+
while (preorder[preorder_start] != inorder[index]) index++
102+
root.left = helper(preorder, inorder, preorder_start + 1, preorder_start+1 + index-1 - inorder_start, inorder_start, index-1)
103+
root.right = helper(preorder, inorder, preorder_start+1 + 1 + index-1 - inorder_start, preorder_end, index + 1, inorder_end)
104+
return root
105+
}
106+
};
107+
108+
109+
```
110+
111+
## 中序 + 后序
112+
113+
```javascript
114+
115+
/**
116+
* Definition for a binary tree node.
117+
* function TreeNode(val) {
118+
* this.val = val;
119+
* this.left = this.right = null;
120+
* }
121+
*/
122+
/**
123+
* @param {number[]} inorder
124+
* @param {number[]} postorder
125+
* @return {TreeNode}
126+
*/
127+
var buildTree = function(inorder, postorder) {
128+
return helper(inorder, postorder, 0, inorder.length - 1, 0, postorder.length -1)
129+
function helper(
130+
inorder, postorder, inorder_start, inorder_end, postorder_start, postorder_end) {
131+
if (inorder_start > inorder_end || postorder_start > postorder_end) return null
132+
let root = new TreeNode(postorder[postorder_end])
133+
if (postorder_start == postorder_end) return root
134+
let index = inorder_start
135+
while (postorder[postorder_end] != inorder[index]) index++
136+
root.left = helper(inorder, postorder, inorder_start, index - 1, postorder_start, postorder_start + (index-1 - inorder_start))
137+
root.right = helper(inorder, postorder, index + 1, inorder_end, postorder_end-1 - (inorder_end - (index+1)), postorder_end-1)
138+
return root
139+
}
140+
};
141+
142+
143+
```

0 commit comments

Comments
 (0)