一个蠢蛋的算法思维提升之路

Posted 卷王2048

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个蠢蛋的算法思维提升之路相关的知识,希望对你有一定的参考价值。

一个蠢蛋的算法思维提升之路

写在前面

博主是一个喜欢胡思乱想的蠢蛋,我无论学什么都在想:

1.我为什么要学这个:到底是为了考试升学,还是为了面试找工作,还是想在其他人面前装b

2.学这个知识能给我带来哪些提升?

3.为什么别人学的比我轻松?到底是因为笨,还是因为方法不对?还是有认知上的差距?

已经刷了600+题,却还是感觉在原地踏步,学了后面忘了前面o(╥﹏╥)o,和刚入门速成的新手一个样

本文就是博主的内心os,希望大家看了就当图一乐

算法是什么,为什么要学习算法

我们写一段程序,是希望让计算机去代替我们完成一些,具有一定流程或在特定规则下的一组操作。做出一个动作或操作是由一系列的判断和计算完成的。在同样的计算资源下,我们希望可以优化程序在解决某一问题的计算次数,即希望让程序在解决该问题时计算次数减少

计算机思维和人思维的差别

人是通过知识+认知做出判断和决策的

计算机是通过计算,并根据计算产生的概率去做出决策的

比如去判断一个最值,人通过知识+认知可以很快的做出来

计算机则是要把所有相关的数据进行计算,通过计算结果进行判断

算法优化的途径

只有2个:

1.通过数学来减少计算次数

2.通过记录某些关键信息,可以减少计算一些情况,从而减少计算次数

前者是最本质的算法优化(根据数的性质和规律)

后者是通过,以空间换时间,这一思想,来进行优化

我们所谓的算法,其实多数为第二种,因为90%的问题无法通过数学优化

问题的关键

所以几乎所有的算法题,大方向都是:

存下关键信息,减少计算次数

把问题聚焦在这两句话上,我们可以发现我们在算法信息中最需要在思维上提升的几个问题:

1.这个问题抽象出来的模型是什么?

2.解决问题的一个方案是什么?

3.这个方案一些步骤中,我们要枚举哪些信息?

4.在枚举这些信息时,我们可不可以通过,预处理数据结构将问题分类数据的一些数学特征,等,去减少我们的枚举情况

5.我们要去存哪些信息?

6.我们要怎么存这些信息?

7.题目中的边界问题

我们在做每一道题时,如果你想明白了所有的以上7个问题,做这道题才是有效的,否则等于白做

尤其是模板题,这7个问题必须清晰明了。如果在使用时有某点遗忘,应尽快复习,搞清楚模板的这7个问题

未完待续.゚ヽ(。◕‿◕。)ノ゚

以上是关于一个蠢蛋的算法思维提升之路的主要内容,如果未能解决你的问题,请参考以下文章

PK1443-前端成长必经之路 组建化思维和技巧

游戏与算法的必经之路!

人工智能来了,我们该如何提升创新思维?

Android开发初期之后怎么提升?怎么才能叫精通?方向在哪?

开发成长之路(16)-- 算法小抄:思维跃迁

开发成长之路(16)-- 算法小抄:思维跃迁