ARTS
Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Tech:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章;
Algorithm
257 二叉树的所有路径
https://leetcode-cn.com/problems/binary-tree-paths/
这题其实就是中序遍历的思想而已,难度不大,只要精通了中序的递归遍历,这里基本做出来没啥问题。
- 用一个链表把节点存储起来,如果到了叶子节点就把链表里的节点转换为字符串输出。
- 在递推体的最后记得吧节点去掉,不然会出现节点的重叠现象。
class Solution {
List<String> res = new ArrayList<>();
public List<String> binaryTreePaths(TreeNode root) {
LinkedList<Integer> list = new LinkedList<>();
preTraverse(root, list);
return res;
}
public void preTraverse(TreeNode node, LinkedList<Integer> list) {
if (node == null) {
return;
}
list.add(node.val);
if (node.left == null && node.right == null) {
res.add(buildString(list));
}
preTraverse(node.left, list);
preTraverse(node.right, list);
list.removeLast();
}
// 单独写一个用来构造字符串的方法。
public String buildString(List<Integer> list) {
StringBuilder sb = new StringBuilder();
for (int i = 0, len = list.size(); i < len; ++i) {
if (i == len - 1) {
sb.append(list.get(i));
} else {
sb.append(list.get(i) + "->");
}
}
return sb.toString();
}
}
来看看具体时间:
根据目前的效率来看,这应该是全网最快的解法了。
Review
Let’s code a TCP/IP stack, 1: Ethernet & ARP
http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/#address-resolution-algorithm
这篇文章是用C语言来实现TCP/IP的第一篇,主要定义了一些数据帧的格式和讲解了一些和ARP相关的知识
TUN/TAP devices
Ethernet Frame Format
Ethernet Frame Parsing
Address Resolution Protocol
Address Resolution Algorithm
Conclusion
Sources
其实这里还是需要你对TCP/IP有足够的了解才行了,我对这个知识不是非常的了解,所以看着还算有点吃力,还有就是这里用的C来实现的,对C实在是不感冒,所以我以后看着看着没准会找一些Java实现的来试试。
Tip/Tech
看了篇系统设计的思维相关的文章:
一、组成视图
组成视图,表达了系统由哪些子系统、服务、组件部分构成。
二、交互视图
交互视图,表达了系统或服务与外部系统或服务的协作关系,也即:依赖与被依赖。
我觉得上面两张图最用的,这里推荐程序员的联
来自『程序员的进阶攻略: 讲多维与视图:系统设计的思考维度与展现视图』
Share
5位美国大学招生官讲录取潜规则:有钱有权很重要
http://www.vice.cn/read/how-broken-the-college-admissions-process-is
可以从视频看出几点,因为美国的大学是申请机制的,每个学生可以自己选择一主动申请一些大学,然后大学里各种的老师会在几万份的申请当中去选择出他们认可的学生,让这些学生接受大学的面试。那可以看出,不同的老师对学生的某些偏好程度有着不同的侧重点。最后视频中提到,如果你爹妈愿意为你捐赠出高达七位或者八位数的存款,而且你和校董还有那么点交情的话,那么你就基本不用啥子努力了,基本都能进去了。