引言

作者: 暴风雪blizzard | 来源:发表于2017-10-26 10:10 被阅读0次

开篇

这个系列坑主要围绕 leetcode 和基本数据结构学习。我大概是第三次刷 leetcode 了,第一次是大学玩 ACM 的时候热身刷,用c++表达。第二次是一年多前面试 facebook 前端时刷了一下,但没有刷完。最近想用js表达再刷一次发布出来。

数据结构与算法,顾名思义就是 数据结构+算法。数据结构为了存储设计一个面向存储的实现方式,为了程序接触方便则需要拗一个数据的造型,所以主要就分为存储方式+造型(结构)。算法说白了就是一些程序逻辑,作用在数据结构上,为了实现一个需求。首先,需求要满足,需要对它测试。其次在满足需求的前提下通过一些评价指标,比如时间空间复杂度来评价这个方案并优化它。最后,我们需要清晰的表达出我们的逻辑,要追求 clean code,让大家一目了然通读。

思想

我自己参加过很多面试,也面试过很多人,一些同学对算法是抵触的,觉得好像就是一个理论体系。其实不然,一到算法题你可以当做一个工程题。产品经理提的需求就是一个input和一个output,并且对你的性能有所要求,关键是这个需求不会改!那么我们该怎么做?当然首先把 文字转换为数据,通过我们选择的语言变成一个你想实现的数据结构,比如我用数组,我用链表,我用树。这都ok,目的就是为了在计算机中表达出这个数据。至于到底选什么当然会根据性能根据需求而定,你可以放大并把它理解为技术选型。当然这些基础数据结构本身也有一些模版代码,比如树怎么实现,链表怎么实现。这些数据结构上一定需要绑一些逻辑,最后输出成output。这些逻辑本身会有副作用,于是我们拿到一定也会先把需要用到的副作用变量申明好,命名好。比如树的遍历,我一定需要一个当前的缓冲值,然后考虑我的算法方法,边界条件等等。做完之后记得写测试判断需求是否满足,然后评价&优化它。

评价

在解决一个问题的时候,我们会有个万能的方法,就是所有情况都去尝试。虽然笨但是一定能做出来,代价就是运行次数规模,我们把它可以作为一个时间维度的评价的指标。于此对应自然就会有空间维度的评价指标,同样解决这个问题,你再干的时候有很大的副作用空间,需要给你挪很多地方放东西,那么也是一个评价指标。对时间性能所谓好的方法解决一个问题自然就是,通过每个问题的特点分析,构造我们逻辑去尽可能的命中有用的逻辑,尽可能减少重复的无用逻辑,一旦命中有用逻辑分支,那么else的所有情况就被跳过了。所有的算法我们可以看特点,都是分析需求特点,然后看看我们有没有办法让他更容易命中有用逻辑,跳过更多无用的执行次数。比如树的优先查找算法,这种结构当我们一条路检测到某个特诊后,下面的路不用走了,直接剪枝,回去走新路,当然对于走路是一路往下走还是走一路换旁边的路再往下,走多少跳出来,都是根据需求判定哪个更容易更少走无用路。我如果更容易命中特征也就更快的能知道这里可以走,这里不可以走,开启新的路。

我希望我表达的更通俗更好理解,以实战为主。

相关文章

  • 引言,引言

    “坐在阳台蓝色的小木头凳子上有的没的读那么几页书。秋天最后的风吹进来,居然是非常暖的,闭上眼睛深呼吸倒像是回到四五...

  • 引言

    以下文章皆为原创 欢迎欣赏

  • 引言

    我走在夜风中。世界似乎已经忘了我。 我竖起我的衣领来抵御寒冷,而不再像以前那样是怕被人认出来。 “卖报卖报!”一个...

  • 引言

    搞了很多乱七八糟的东西,最后还是决定自己做一个os。也没什么好说的开始吧。 参考资料: https://w...

  • 引言

    在写这本书的时候,我是迷茫的 其实,我刚刚结束了一场梦 梦里,又出现了那个人 一身白衣 仙袂飘飘 乌黑的长发 墨...

  • 引言

    在这里,我将把我所见所闻记录下来,有感于生活的恩典。这是个不平凡的日子,因为周遭都被记录了下来,细节决定了功效。 ...

  • 引言

    这个文集是Coursera上吴恩达教授授课的《机器学习》课程的课程笔记与总结,下面是课程的链接:吴恩达教授机器学习...

  • 引言

    我想大多数人都会有一个面朝大海春暖花开的梦想,在我看来这就是要财务自由。财务自由这个词好多同学都听过,简单...

  • 引言

    斗转星移,时光荏苒,今年我已六十五岁了。老年人无所事事,容易怀旧。过去的一些事情偶或冒出来,似乎告诫你不能忘...

  • 引言

    长久以来,在我脑海中始终有那样一方天地——一个属于武侠的世界。 说起武侠,无人不会想起金庸和古龙两...

网友评论

      本文标题:引言

      本文链接:https://www.haomeiwen.com/subject/wbphpxtx.html