如果要学习算法,参加比赛,学习数据结构时需要把类似于队列和链表什么的函数构造独立实现吗?还是说用比如java自带的可以方便实现的关键字实现就行。
如果你想深入理解数据结构和算法的实现原理,建议自己动手实现队列和链表等数据结构。这样可以帮助你更好地理解它们的本质和实现方式,从而提高你的编程能力和算法水平。但如果你只是想在比赛中快速解决问题,使用Java自带的关键字实现也可以。(点个关注吧hhh)
- 数据结构至少需要掌握数组、链表、栈、队列、树、图这些基本结构,并熟练掌握它们的时间复杂度分析、适用场景等。
- 算法至少需要掌握排序算法、搜索算法、图算法等基本算法,理解算法复杂度分析,会改进和选择合适的算法。
- 实现这些数据结构与算法非常重要。理解实现过程可以加深理解,培养编程思维。
- 实践和训练也很关键,通过项目实践和算法竞赛来提高自己。
在学习和实现数据结构与算法时,使用标准库当然很方便,但我建议您也自己实现一遍。理由有: - 自己实现可以深入理解原理和运作细节,培养编程思维和能力。
- 有些标准库的实现细节难以看到,自己实现可以避免产生误解和空白。
- 编程竞赛和工作面试中,往往要求自己实现这些数据结构与算法。
- 实践出真知,自己实现过的知识与技能会更加牢固掌握。
所以,我的建议是:学习数据结构与算法理论知识的同时,一定要自己实现。理解实现过程,熟练使用,这是真正掌握这门知识的关键。只会调用标准库的功能是远远不够的。
标准库当然也很有用,可以利用它来快速测试和整合自己的实现代码。但不要完全依赖它,要自己动手实现。
如果只是单纯打比赛,可以用Java自带的关键字就行,不过也需要了解队列和链表的本质,有时间的话最好自己能手写一下,毕竟知道原理了,用起来更通畅,打比赛的时候也更得心应手,不会出现抠细节的地方而浪费时间。
如果是要学习的话,就建议系统的去实现几遍了,直到看见队列和链表一眼就能看出来是个什么东西,现在有些库喜欢搞封装,套娃,所以懂底层是更好的