VIRTUALS

the virtual labs for the virtuals

0%

type Meaning in MBCS builds Meaning in Unicode builds
WCHAR wchar_t wchar_t
LPSTR char* char*
LPCSTR const char* const char*
LPWSTR wchar_t* wchar_t*
LPCWSTR wchar_t* wchar_t*
TCHAR TCHAR char wchar_t
LPTSTR TCHAR* TCHAR*
LPCTSTR const TCHAR* const TCHAR*

题目

给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
例如,给定一个 3叉树 :

1
2
3
4
5
       1
/ | \
3 2 4
/ \
5 6

我们应返回其最大深度,3。
说明:

1.树的深度不会超过 1000。
2.树的节点总不会超过 5000。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Definition for a Node.
class Node {
public int val;
public List<Node> children;

public Node() {}

public Node(int _val) {
val = _val;
}

public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};

DFS

没啥可说的,和「LeetCode-104-二叉树的最大深度(Maximum-Depth-of-Binary-Tree)」对比,无非就是取最大值的不同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public int maxDepth(Node root) {
if (root == null) {
return 0;
} else if (root.children.isEmpty()) {
return 1;
} else {
List<Integer> heights = new LinkedList<>();
for (Node item : root.children) {
heights.add(maxDepth(item));
}
return Collections.max(heights) + 1;
}
}
}

当然,亦可维护一个「最大值变量」,children的每个元素,和它作比较。

1
2
3
4
5
6
7
8
9
10
11
12
13
//本方法参考HJF的题解
class Solution {
public int maxDepth(Node root) {
if (null == root) {
return 0;
}
int result = 1;
for (Node child : root.children) {
result = Math.max(result, 1 + maxDepth(child));
}
return result;
}
}

迭代

可以由DFS递归改成迭代,同时维护一个最大值变量,每次出队需要将节点的深度信息和最大值变量作比较。所以节点需要携带深度信息。可以借助pair,也可以写一个新的节点类。

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
//本方法参考官方题解
import javafx.util.Pair;
import java.lang.Math;

class Solution {
public int maxDepth(Node root) {
Queue<Pair<Node, Integer>> stack = new LinkedList<>();
if (root != null) {
stack.add(new Pair(root, 1));
}

int depth = 0;
while (!stack.isEmpty()) {
Pair<Node, Integer> current = stack.poll();
root = current.getKey();
int current_depth = current.getValue();
if (root != null) {
depth = Math.max(depth, current_depth);
for (Node c : root.children) {
stack.add(new Pair(c, current_depth + 1));
}
}
}
return depth;
}
};

本题亦可使用BFS,但是我不想写了。

题目链接: https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/
官方题解: https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/solution/ncha-shu-de-zui-da-shen-du-by-leetcode/

今天在shell上安装Anaconda的时候,发现安装过程中的「风火轮」进度条很有趣,于是就简单实现了一下:

1
2
3
4
5
6
import time

icon = ['\\', '-', '/']
for m in range(40):
print('\rAll work and no play make Jack a dull boy: {}'.format(icon[m % 3]), end='')
time.sleep(0.25) # -- control the r.p.m

无非就是把print函数的end='\n'换成end=''以便每次打印光标可以回到行首。再就是循环icon列表,制造「动画效果」。
比如你要倒计时10s,每0.25s输出一帧,那么就要输出40帧。每一帧依次选取列表的下标可以用m对列表长度取余。

科目二

项目开始前准备:
系好安全带,放下手刹,踩下刹车,启动引擎,踩下离合器。


倒车入库

pic0x0
左倒库:

  • step 1: 挂1挡,轻踩离合至左后视镜看到L1角,方向盘向左打满。
  • step 2: 车身垂直于A线方向盘回正。
  • step 3: 行驶至胳膊超过A线离合刹车踩满停下,准备左倒车入库。
  • step 4: 挂倒挡,轻踩离合当车辆倒至左后视镜下边缘与A线重合,方向盘向左打满。
  • step 5: 此时注意左后视镜L1角,当L1角出现时,注意它和车身距离。大于30cm则车辆位置正确;小于则转角过大,方向盘向右回一圈减小转角。
  • step 6: 此时注意观察右后视镜,观察当R2角出现时,方向盘迅速回正,此时注意到车身和R线平行。
  • step 7: 继续倒车直至左后视镜下边缘与L1角重合。

右倒库:

  • step 1: 挂1挡,轻踩离合至左后视镜看到L1角,方向盘向右打满。
  • step 2: 车身垂直于B线方向盘回正。
  • step 3: 行驶至胳膊超过B线离合刹车踩满停下,准备右倒车入库。
  • step 4: 挂倒挡,轻踩离合当车辆倒至左后视镜下边缘与B线重合,方向盘向右打满。
  • step 5: 此时注意观察右后视镜R1角,当R1角出现时,注意它和车身距离。大于30cm则车辆位置正确;小于则转角过大,方向盘向左回一圈减小转角。
  • step 6: 此时注意左后视镜,观察当L2角出现时,方向盘迅速回正,此时注意到车身和L线平行。
  • step 7: 继续倒车直至左后视镜下边缘与L1角重合。

侧方位停车

pic0x1
将车开出车库至准备区域:

  • step 1: 挂1挡,踩离合,打左转向灯,方向盘向左打满。
  • step 2:注意观察左后视镜,当B角出现时,回正方向盘。
  • step 3:让车辆继续缓缓行驶,注意观察左后视镜,当左前门门把手与车库虚线重合时,方向盘向右打满。
  • step 4:观察右后视镜,当车右侧与虚线平行时,车身已正,方向盘回正。
  • step 5:观察右后视镜,当A角出现时,停车。

右侧方停车:

  • step 1:挂倒挡,观察右后视镜,当A直角消失,方向盘又打满。
  • step 2:注意观察左后视镜,当B直角出现,方向盘回正。
  • step 3:注意观察左后视镜,当左后轮即将碰到车库虚线时,方向盘左打满。
  • step 4:注意观察右后视镜,当车右侧与车库边线平行时,车身已正。停车。

第一集

  • 很多人用西方的标准去看中国的一切,所以在他看来中国人士乱七八糟的。更有趣的是,自五四运动以来,他们用中国的缺点和西方的优点去比,那当然中国人更糟糕。全世界它要比较的话,应该以一个较持平的标准。

  • 西方和中国的人际关系是截然不同的。西方人与人是平等的,中国是不平等的。在中国,人人平等那就叫没大没小。

  • 现在很多人看书,是越看越困惑越看越倒霉。是因为他们看的都是西方的书,西方的技术是可以学的,因为科学无国界。可是跟文化有关的书,你就要十分小心,一不注意就会掉到坑里去。

  • 西方社会是「神本位」,而中国是「人本位」。西方人认为神是一切的主宰,解释一切都离不开神。而伏羲氏认为天底下最了不起的不是神,而是人。你为什么一定要把一个神弄在你上面当你的主宰呢?

  • 中国是没有宗教的,你看所有宗教他都是外来的。中国人崇拜祖宗,叫做「祖宗崇拜」。很多人说不对呀,你看很多人在拜。你要小心了,那不是「拜神」,那是「理神」。

  • 「神本位」必然走向个人主义(人都是上帝的子民,所以人是个人的、平等的)。西方人经常讲,这是我个人意见blabla。在中国我劝你不要这样讲,你一这样讲,人家就开始不听了。你算老几,你有什么意见?西方人说我个人意见表示我负责,在中国你说你负责你就更惨了,人家就怀疑,你能负什么责?——讲太多西方的话,吃亏的是你自己。

  • 中国人认为人生而不平等。人生下来之前是平等的,人死了之后也是平等的,只要你活着你就不平等。中国人接受 合理的不平等 ,不接受 过分的不平等完全的平等 我们是完全不相信的。

  • 中国人认为人与人之间相当地不平等,那才叫 伦理 。他是你爸爸,就永远是你爸爸,你永远讲不过他。他是你的领导就永远是你的领导,你就是讲不过他。然后你骗自己说我跟他是平等的,何必呢?

  • 西方有人际关系,而中国有人伦关系,我们本没有人际关系,现在说人际关系其实是很勉强。中国人认为人际关系加上伦理就成了人伦关系。你看两个人在谈话,只要有第三个人插进来,我们马上就会调整,中国人的警觉性很高,还要装得没调整一样。全世界找不到像我们这样的人。

  • 中国人都是双重标准。别人遇到什么事,他都会说,怕什么?不用怕!轮到自己,哎呀我要小心一点。

    郭德纲说:劝人大度遭雷劈。我的理解其中的一方面就是对这种双重标准的反击:哼,你自己遇到事儿怎么不大度了?

  • 中国的法律、规定都是有弹性的,没有弹性就没办法执行。所以中国人遇到事情就会讲一大堆道理,然后大事化小小事化了,小到不知道怎么办才好。

  • 西方人与人之间,它是好奇,但他不会去关心你。在中国人与人之间,它不好奇,没有什么好好奇的,我们是 关怀 。你看西方男人和女人他们互相好奇,很快就同居,发生关系。人与人之间如果不能关怀,那产生什么关系又怎么样呢?西方人见面,Hi, Hello, GoodMorning,很有礼貌但一点也不关心你。你看中国人见面,—— 噫,你嘴巴怎么破了? —— 上火。 二话不说把药给你吃。西方人之间的这种好奇而不关心产生了人与人之间的 距离感

  • 西方才讲利害。大到国与国之间,小到人与人之间,完全讲利害关系,没有什么道义可言。真正了解中国人说我们很 势利 ,我们不讲利害。这件事搞不好就让他走,这就是利害。而中国人,这件事搞不好是搞不好,但他后面有背景,我得罪他,上面会找我。我不是喜欢他,我是看到他不敢动他。上面一旦完了,我第一个动他。这就是 势利