不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

动态规划-Dynamic Programming

1,wiki定义
2,in a recursive manner
3,Divide & Conquer + Optimal substructure——分治+最优子结构

关键点

  • 动态规划和递归或者分治没有根本区别(关键看有无最优的子结构)
  • 共性:找到重复子问题
  • 差异性:最优子结构、中途可以淘汰次优解

顺推模板

阅读全文 »

起因

因为买了一台新电脑,所以需要将旧电脑上本地的Hexo文件夹迁移到新的电脑上来,写以此文记录迁移Hexo的过程。

流程

第一步,在新电脑上搭建Hexo的环境

安装node

阅读全文 »

今天换了一台新电脑,替代我那用了六年之久的Dell灵越笔记本电脑。

最新的intel CPU+512G固态硬盘+16G内存+4G独显,外加价位合适,所以立马入手。

另外宏碁的标志acer,让我想起大学参加竞赛时候ac一道道题目的感觉,ac+er也更好合适,工程师的工作不就是ac一个接一个的问题吗?

所以后期打算如何规划呢?

  • 安装Visual Studio,把图形学搞一下,正好有个关于DirectX的项目顺便做了;

  • 务实基础,算法、数据结构、网络和操作系统;

  • 每周尝试在Medium上翻译一篇技术文章;

  • 准备软考中级网络工程师;

  • 学习理财,边学习理论边在蚂蚁财富上进行实践;

  • 开始整理LeetCode、LintCode、牛客网和面试书籍上的题解;

  • 整理常考面试题;

  • 坚持锻炼,早睡早起。

阅读全文 »

2020年,我利用上下班和等车时间,读了很多书,发现时间虽然碎片,有时看不起眼的3-5分钟,其实如果加以利用的话,就是200-300秒的思考时间,将这几百秒的时间乘以每天十几个时间碎片片段,也是一块不小的时间空隙呢。

当然碎片化也不好,就是不能集中注意力,也许看了第三章,打断阅读后再回过头来已经忘记了第一章节的内容,因此我个人建议可以给每一章末尾或印象深刻的段落加上笔记,这样当我看到我写过的东西,就会立刻回想起原先的内容。

下面是我利用思维导图工具制定的一份2021阅读计划,希望年底前可以完成它。

GOOD LUCK.

阅读全文 »

兰彻:那天我懂了,心很脆弱,你得学会哄它,不管遇到多大困难,告诉你的心,All is well 一切顺利。
拉朱:那能解决问题吗
兰彻:不能啊,但你得到了面对问题的勇气。

                                                 ——《三傻大闹宝莱坞》  

今年发生了许多事,面试、离职、裸辞、备考…,写以此文,纪念我已经逝去的2020。

从毕业到职场,已经过去了两年半,从满心欢喜的实现了我小时候的梦想——工程师,到如今开始对大环境的迷茫和怀疑,我一时不知所措。

疫情期间的无所事事

阅读全文 »

打工人,越来越难了。

曾以为打工只是出卖自己的劳动力换取报酬,然而没想到行业内卷的这么严重,停止等于倒退;没有今天的996,哪有明天的669;优化不能加班的员工;35岁被裁…现在要成立HR联盟,垄断员工肆意跳槽。

我不知道未来将会怎样,今天意外刷到一部冷门电影《极乐空间》,放佛看到了打工人的未来。

社会缺什么,就会赞美什么————缺爱国情怀,就去拍各种抗日神剧;缺真善美,就去拍各种脑残傻白甜的电视剧…我一直很喜欢《妖猫转》里的一段话:人心这么黑暗,我想找到一种不再痛苦的秘密。而最后杨玉环给了我一个答案:生活是不完美的,但我依然可以选择去拥抱生活的美好。

什么是美好呢?也许是一次温暖的鼓励,也许是临行前父母的嘱托,也许是高考前妹妹大声喊着“哥哥高考必胜”,也许是大雪纷飞中公交车司机多等了我一分钟…可是,当我步入职场后,我却发现自己越来越难以坚守本心。

阅读全文 »

题目链接

https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/

题目解析

Golang

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
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func minDepth(root *TreeNode) int {
if root == nil {
return 0
}
leftDepth := minDepth(root.Left)
rightDepth := minDepth(root.Right)
if root.Left == nil {
return 1 + rightDepth
}else if root.Right == nil {
return 1 + leftDepth
}

return 1 + min(leftDepth,rightDepth)
}

func min(a,b int)int {
if a < b {
return a
} else {
return b
}
}