初学者算法学习算法的算法
步骤 1:学习基本数据结构和算法
首先,选择一门你最喜欢的语言并坚持学习。尽量学习数据结构的核心概念,因为不同语言的数据结构本质上几乎相同。
- 基本数据结构:数组、字符串、布尔值、链表、堆栈、队列、二维数组、集合、二叉树等。
- 条件逻辑(
If
) - 控制流语句(、、
for
循环等...)while
do
- 排序算法:插入排序、冒泡排序、选择排序、归并排序、快速排序、基数排序。从这里你将学习到不同的方法,例如暴力破解法、分而治之法。
- 了解大 O符号、运行时复杂度和空间复杂度有助于您编写高效的算法。
掌握这些概念非常重要,因为它们是理解高级概念和解决复杂问题的基础。
资源
以下是一些相关资源
Udemy 课程:JS 算法和数据结构大师班
第 2 步:学习高级概念、数据结构和算法
如果您已经熟悉大多数概念并开始学习更高级的主题,则可以跳过步骤 1:
- 堆、哈希表、树的变体、图(DFS、BFS)
- 递归
- 动态规划
- 回溯(例如,解决 N 皇后问题、数独)
- 位操作
- 面向对象编程
- 系统设计
- Leetcode 上的中等到困难的编码问题
资源
Github 上的免费系统设计入门
Udemy 的Java 高级算法
步骤 1+2:练习
熟能生巧。在学习所有数据结构和算法的同时,进行大量的练习来巩固所学知识非常重要。
-
LeetCode 是一个免费的编码练习平台
-
模拟面试
PRAMP是一个很棒的模拟面试练习平台。对于面试官和被面试者来说,这是一个双向学习的过程。
-
我订阅了《每日编码问题》以接收每日精选的编码问题。
-
我订阅了Interview Cake,每周都会收到编程题。我发现他们的解释很详细,也很容易理解。
第三步:大量阅读+写作
阅读是一种接受技能,我们可以(被动地)通过他人的写作来学习。通过阅读教科书、博客文章、他人的代码、readme 文件等,我们可以获得很多知识。
我偶尔会写博客文章。写作比阅读需要更多时间,因为我需要花些精力进行研究、排版、拼写检查、校对等等。然而,(我认为)写作迫使我运用大脑的不同区域,并更清晰地表达,以便读者能够理解。
图书
- 破解编码面试
- 编程面试的要素
博客
步骤 4:为开源项目做贡献
找到你最喜欢的开源项目并做出贡献。这是一个利用实际项目进行学习的好方法。Dev 每周都会举办开源讨论会。
第五步:休息一下
最后,同样重要的是,别忘了放下电脑和手机,休息一下。完成设定的里程碑后,奖励自己一下。最后,我想引用一句我最喜欢的名言。
享受旅程,而不仅仅是目的地。
快乐学习。
文章来源:https://dev.to/rattanakchea/algorithms-for-learning-algorithms-3lij