关于算法

早上复看二叉树遍历算法,结合昨天在油管上的学习,突然有一点顿悟。说也好笑,三十七八岁以后因为单位考试,然后开始找补从前大学考得比较差的一门功课。

2020年主要是刷 leecode 题,因为当时要考上线编程,那就可不考虑程序效率,我当年的总结是能用递归一定要用递归,递归的思维演算过程最简单。记住递归程序的编程模式就好,在递归函数内部剪枝,提高一下基本效率。然后90后小朋友告诉我,经验是:先刷二叉树,最后是动规。那考试遇到动态规划的题,反正就放弃了。然后我顺带把 python 还学了一遍。总结是学习编程算法,是要从 python 开始,这个语言很美好。

2021年说不考线上编程了,改填空题。那不能用递归了,要用规规矩矩的迭代。我开始把二叉树的前中后序遍历迭代算法拿来啃一啃。昨天到今早都在看,其实自己演练了好多次,总不得法门,有点气气馁,只好在油管上找资料看人讲解,就明白了。然后早上做了一道变通的题,是有关二叉树镜像反转的,一看实际考的是中序遍历。

那早上的顿悟是:像递归一样,一定把基本的算法框架牢记在心里,基本的理解和记忆力,就避免了完全重新的推导和演练,然后再看看这个题的变化之处,例如二叉树镜像,其实没有说考遍历啊,但是它其实就是遍历的一个变种。这个变化之处就会让它和传统的中序遍历算法有点不一样,会在程序里体现。所以程序=基本框架+问题变化

另外就是感慨,学习资源很丰富,找到好的老师和视频课程就是让聪明人帮助自己开拓思维模式,不能局限在自己的封闭圈子。所以最近给女儿加了奥数课,也是一种尝试。不可执迷,亦不可逃避,当做游戏吧。

发表回复