# 第七十八周ARTS总结
# Algorithm
0ms | 100.00% Run time
39.2MB | 34.28% Memory
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if (root == null) {
return ans;
}
// 当前层
List<TreeNode> curLevel = new ArrayList<>();
// 下一层
List<TreeNode> nextLevel = new ArrayList<>();
// 是否从左往右
boolean leftToRight = true;
curLevel.add(root);
while (true) {
if (curLevel.size() == 0) {
break;
}
List<Integer> level = new ArrayList<>();
if (leftToRight) {
for (int i = curLevel.size() - 1; i >= 0; i--) {
TreeNode cur = curLevel.get(i);
level.add(cur.val);
if (cur.left != null) {
nextLevel.add(cur.left);
}
if (cur.right != null) {
nextLevel.add(cur.right);
}
}
} else {
for (int i = curLevel.size() - 1; i >= 0; i--) {
TreeNode cur = curLevel.get(i);
level.add(cur.val);
if (cur.right != null) {
nextLevel.add(cur.right);
}
if (cur.left != null) {
nextLevel.add(cur.left);
}
}
}
ans.add(level);
leftToRight = !leftToRight;
curLevel.clear();
curLevel.addAll(nextLevel);
nextLevel.clear();
}
return ans;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2ms | 14.55% Run time
38.8MB | 78.78% Memory
public int maxDepth(TreeNode root) {
int depth = 0;
if (root == null) {
return depth;
}
List<TreeNode> curLevel = new ArrayList<>();
List<TreeNode> nextLevel = new ArrayList<>();
curLevel.add(root);
while (curLevel.size() != 0) {
depth++;
for (TreeNode treeNode : curLevel) {
if (treeNode.left != null) {
nextLevel.add(treeNode.left);
}
if (treeNode.right != null) {
nextLevel.add(treeNode.right);
}
}
curLevel.clear();
curLevel.addAll(nextLevel);
nextLevel.clear();
}
return depth;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Review
# Tip
- 可通过
ProcessLifecycleOwner
来监听整个APP的生命周期,回到前台、退到后台等 - 可通过设置window的type来让弹窗在其他APP上层
context.startActivity
中的context
如果不是Activity
,需要添加addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
filterIsInstance
可以根据类型来过滤集合- kotlin的难点
- 不变性思维
- 空安全思维
- 表达式思维
- 函数思维
- 协程思维
# Share
暂无内容