一个蠢蛋的算法思维提升之路
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个问题
未完待续.゚ヽ(。◕‿◕。)ノ゚
以上是关于一个蠢蛋的算法思维提升之路的主要内容,如果未能解决你的问题,请参考以下文章