当前位置: 代码迷 >> 综合 >> ARTS 2019 06 02 (33)
  详细解决方案

ARTS 2019 06 02 (33)

热度:19   发布时间:2023-12-10 02:47:01.0

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

这篇故事说的就是苏联为了自己的面子的工程,为了纪念列宁,硬生生的害死了一个宇航员的故事。
最进看了一部美剧《切尔诺贝利》,里面就是有很重要的一个情节就是,事故发生了,当时的老大不是选择撤离民众,而是选择了全城封锁。这样无形中伤害了多少普通老百姓啊。好像很多统治阶级都喜欢这样的来应付了事的。这样就把原来没有那么严重的事故,一下子没控制好,就吧事故给放大了。