Algorithm:718. 最长重复子数组
Review: 应用函数编程原则
Tip/Tech:
Share: 毛细血管的架构
Algorithm
718. 最长重复子数组
https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/
这题是经典的动态规划的题目,本来这题我想用哈希表来解决的,但是无奈我的逻辑不行?最后代码给写的太复杂了,我自己都看不下去了,只能根据动态规划的思想。其实思想很简单,就是要想如何去记录状态比较重要。
public int findLength_backUp(int[] A, int[] B) {
int dp[][] = new int[B.length + 1][A.length + 1];int res = 0 ;for (int i = 0, lenA = A.length; i < lenA; ++i) {
for (int j = 0, lenB = B.length; j < lenB; ++j) {
if (A[i] == B[j]) {
dp[i + 1][j + 1] = dp[i][j] + 1;if (res < dp[i + 1][j + 1]) {
res = dp[i + 1][j + 1];}}}}return res;
}
只要当前的只相等,那么就吧之前的那个数据加一, 得到结果之后,那么就可以很清晰出的看到结果的。
Review
https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_05/
简单就是美
有名言,总结了我们软件开发人员应该追求的价值观。
风格和谐,优雅和良好节奏的美丽取决于简单性。 - 柏拉图
这句话当然太抽象了,如果落实到代码层面,那么无非就是你的代码需要有一下几个特征:
可读性
可维护性
可观的开发速度
我觉得这些都是些客套话啊,至于说以上的代码的特质,你到底要如何运用的话,那就不好说了。每个人都有每个人的选择了。
最后的这一段我觉得可以翻译一下:
美丽的代码是简单的代码。每个单独的部分都保持简单,简单的职责和与系统其他部分的简单关系。这是我们可以通过干净,简单,可测试的代码保持系统长期可维护的方式,在整个系统生命周期内保持高开发速度。美是由简单而诞生的。
Tip/Tech
最近在学习关于web协议的一些内容,wireshark的功能是很强大的,如果想要学好web协议,基本上是离开不开这个工具的。
Share
https://twitter.com/DMOberhaus/status/1116939111368097792
这篇故事说的就是苏联为了自己的面子的工程,为了纪念列宁,硬生生的害死了一个宇航员的故事。
最进看了一部美剧《切尔诺贝利》,里面就是有很重要的一个情节就是,事故发生了,当时的老大不是选择撤离民众,而是选择了全城封锁。这样无形中伤害了多少普通老百姓啊。好像很多统治阶级都喜欢这样的来应付了事的。这样就把原来没有那么严重的事故,一下子没控制好,就吧事故给放大了。