写在最前

本篇博客为躬行之路中week1的对应博客,主要记录我学习到的算法还有在leetcode上做的题。学数据结构、算法,甚至是计算机科学,甚至我认为包括一切理工科,只看书不动手是不行的。很遗憾在大学的前两年浪费了太多的时光,因此C++没有很好的基础,同时也没有学习算法,使得自己至今不会程序设计,很遗憾。不过万幸,悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非。 同时,我再次引用陆游的诗。

《冬夜读书示子聿》(宋)陆游古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。

一些前言

躬行之路的周更博客中并不会写一些被其他人写烂了的内容,抄教材并不是什么优秀且值得骄傲的行为。由于这是互联网形式,因此,所有我在学习时所看的资料,都会以链接的形式直接贴在博客当中。关于我所学的内容本身,我只会写一些自己的想法和心得体会在博客里面。所有算法都会尝试用C和python两种语言实现,并且尽量在python中压行,一行解决问题。不过重心仍然放在C之上,一方面是因为面试几乎都是用C++,另一方面也是python底层也不知道在干什么,也没有什么自己需要实现的数据结构,同时我认为python主要是用来快速上手、快速实现功能的语言,不适合练习算法。关于py只是做一些练习,希望自己以后写的神经网络不要太丑了。

本周内容

STL

熟悉了一下STL是咋回事,以及vector这玩意怎么用,顺便进行C++康复训练,因为C++水平过低已经被松子桂鱼瞧不起了。。。

算法

线段树

首先学了线段树(松子桂鱼大佬浇我线段树),目前还没做题,只做了洛谷P3372的板子。不过这个题很有启发性,我开始尝试在我的程序中大量使用位运算来加快我的程序。确实是非常快的速度。

周日晚上学了KMP算法,这玩意好像挺巧的,值得学一学。

前缀

一个小小的trick,并不是算法。不过这个小trick很有意思,算是数组操作的基础了。本质上是以空间换时间,这样可以规避两层for循环带来的$O(n^2)$级别的时间复杂度。很有趣。要不是学了前缀我还真没法学KMP。有点意思。本周完成的题目如下:

  • 2319

  • 238

  • 523

  • 洛谷线段树模板

  • 洛谷KMP模板