如何提升你的数据结构、算法以及解决问题的能力
这篇文章借鉴了我过去在学校一个学期的个人经历和挑战,当我进入学校的时候,我对任何 DSA(数据结构和算法)和解决问题的策略几乎一无所知。作为一名自学成才的程序员,我对一般编程会更加熟悉和舒适,例如面向对象编程,而不是 DSA 问题所需要的解决问题的能力。
这篇文章反映了我整个学期的经历,并包含了为了快速提高数据结构、算法和解决问题的能力而求助的资源。
面临问题:你知道原理,但是你被实际应用卡住了
我在学期初期的时候遇到这个问题,当时我不明白我哪里不懂,这是一个特别严重的问题。我对这个理论很了解,例如,什么是链表,它是如何工作的,它的各种操作和时间复杂度,它支持的 ADT(抽象数据类型),以及如何实现 ADT 操作。
但是,由于我不明白我哪里不懂,所以我无法确定我对它的理解和在实际应用中解决问题的差距。
不同类型的问题
一个数据结构问题的例子:描述如何在链表中插入一个节点并说明时间复杂度。
这是一个算法问题:在旋转数组中查找元素并说明时间复杂度。
最后是解决问题的疑虑,我认为比之前两个问题的级别更高,这可能需要简要描述一个场景,并且列出问题的要求。在考试中,可能会要求你对解决方案进行描述。在编程比赛中,可能会要求你在不明确提供任何的数据结构和算法的情况下提交可运行的代码。换句话说,它们希望你能使用最适合的数据结构和算法来尽可能有效地解决问题。
如何提升你的数据结构、算法和解决问题的能力。
我主要使用三个网站来练习:HackerRank、LeetCode 和 Kattis。它们非常相似,特别是前两个,但不完全相同。我发现每个网站的侧重点略有不同,每个网站都以自己的方式为用户提供最大化的帮助。
我将解决问题所需的技能大致分为:
数据结构知识
算法知识
数据结构和算法知识的应用
前两个被视为”基元“或构建块,第三点就涉及如何将数据结构和算法应用于特定的场景。
数据结构知识
在这方面,我发现 HackerRank 是一个宝贵的资源,它有一个专门用于数据结构的部分,你可以按类型过滤,比如数组、链表、

本文作者分享了自己从对DSA(数据结构和算法)一无所知到逐步提升的过程,通过HackerRank、LeetCode和Kattis等平台进行练习。面对理论与实际应用的差距,作者提出数据结构知识、算法知识和应用的三个方面,并详细介绍了在每个方面如何提升。通过解决不同类型的问题,如数据结构操作、算法应用和综合场景的编程挑战,作者强调了不断实践和学习的重要性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



