什么是算法模板
2024年11月30日大约 4 分钟
什么是算法模板
是什么
- 什么是模板,(给用户看),这是我们在市面上可以看到的模板;
- 模板是竞赛时候库函数的补充,但在准备笔试面试的场景下,模板没有太多意义;
- 正确理解大佬嘴里说的「模板」,是这样的意思:这个问题太简单了,几乎是一个「裸题」(没有经过任何包装的,例如:打家劫舍可以包装成理发师),你自己研究一下,我不想从头到尾给你讲一遍;
- 其实不是因为这个模板有多好用,而是因为很多问题都是这样的问题;
「迷信模板」的危害
- 模板通常只有代码,而没有解释为什么是这样,解决什么样的问题,因为这个模板是用来复制粘贴的,自己用得趁手才是好的「模板」;
- 关注于使用什么模板,只是浮于表面,而忽略了解决问题的关键和本质;
- 迷信模板,会让我们的思维僵化;
怎么用
- 不用。真正的大佬说过,他自己竞赛的时候,几乎不准备「模板」,因为算法的思想他已经非常熟悉;
- 你应该整理自己的模板,而不是把别人的模板拿过来直接用。
总结
- 用算法模板做编程题不是往模板里填空,在不理解模板代码的时候,使用代码模板会给我们带来一些约束和束缚;
- 算法是解决问题的方法,所以都是人想出来的,因此算法和数据结构背后的逻辑很重要。
参考资料
- 我的公众号文章:
- liuyubobobo 老师的公众号文章:
1-1 算法与数据结构是什么
- 算法是解决问题的方法。首先这个方法必须能完成任务,并且有明确的输入和输出;
- 数据结构是保存数据的容器,同时提供了操作数据的方法。我们的手机或者说操作系统就是一个非常复杂的数据结构,它保存了各种数据、同时还提供了对各种数据的操作;
- 算法与数据结构中的数据结构有:数组、链表、栈、队列、树和图。不同的数据结构应用于它们各自的应用场景。
1-2 为什么要学习算法
- 为了应对笔试和面试;
- 是一门基础,具体的算法知识或许没有什么用,但是可以对我们理解更复杂的技术打下基础(与后面的描述重复);
- 就像我们学习的具体的知识、思考问题的角度其实内化为一种能力,我们已经有了学习算法的思维,并且是不自知地在应用它。
- 具体的算法知识在一定程度上只是我们的学习材料,学习这些设计巧妙的算法与数据结构,可以为我们以后解决复杂的问题打下良好的基础。
1-3 如何学习算法
- 保持学习的兴趣,获得正反馈:从简单的问题开始,如果遇到很难、很复杂的问题,不需要急于解决,放在那里一段时间是完全没有问题的。希望大家以后要有这样的自信,这些问题要搞懂它们只是时间的问题,而我们应该更关注于我们应该搞懂哪些问题,搞懂这些问题有什么用;
- 理论和实践结合:刷题和理论学习一起进行。刷题可以在「力扣」上做题,我们为大家准备了一些问题,这些问题其实我们不需要有算法与数据结构的知识,可以通过,大家不妨先做一下;
- (刷题)按标签刷题,每个标签把典型的问题做掉,最终要能总结出来算法和数据结构的设计思想和应该如何应用;
- (参考书):算法图解(这本书用于入门、但是太浅显了)、算法(第 4 版)、算法导论(这两本书的阅读体验很差,但是我目前没有发现比它们还合适的书籍了,看我们想看的部分、能看懂的部分,常看常新)当然如果我们只想刷题
- 学习网站