提高你的算法和数据结构技能

2025-05-24

提高你的算法和数据结构技能

基础知识

想要精通算法和数据结构,首先需要的是扎实的基础。您可以通过多种方式学习,例如大学的计算机科学课程、一些侧重以下主题的编程训练营,或者您也可以通过书籍、视频或在线讲座自学。因此,您需要对以下主题有基本的了解才能开始学习:

数据结构

了解数组、链表、二叉树、哈希表、图、堆栈、队列、堆和其他基本数据结构。

计算机体系结构

学习数据在计算机中的表示方式、数字逻辑设计基础、布尔代数、计算机算术、浮点表示、缓存设计。尝试学习一些 C 语言和汇编语言编程。

超越基本面

一旦你觉得自己对上面列出的大部分概念有了很好的理解,就可以开始深入研究算法部分了。以下是我为提高编写和理解重要算法的能力而做的一些资源和实践。

Big-O 和运行时

自己实现一些算法

首先自己实现几个重要的算法,并了解它们的运行时间。以下是一些示例:

  • 二分查找
  • 欧几里得算法
  • 深度和广度优先搜索
  • 迪杰斯特拉最短路径
  • 二叉树遍历
  • 插入排序、归并排序、快速排序
  • 最小和最大堆
  • 更多示例列表

算法书籍

挑战

算法解释和面试题

  • 在GeeksforGeeks上尽可能多地阅读算法解释和代码示例。这里有一篇关于图算法的优秀文章
  • 看看CareerCup上发布的一些面试题,试着了解其他用户是如何解答这些问题的。比如这个例子
  • 除了编码挑战网站之外,还可以尝试解决您在网上找到的常见编码面试问题,例如此列表中的问题。

动态规划

如果你想提高算法水平,你必须理解这个非常重要的概念,这也是我将这个主题与其他主题分开的原因。维基百科对此的描述如下:

一种解决复杂问题的方法,即将复杂问题分解为一系列更简单的子问题,每个子问题只需求解一次,并存储它们的解。下次遇到相同的子问题时,只需查找之前计算出的解,无需重新计算,从而节省计算时间。

我在参加过的几次编程面试中都见过动态规划的身影。我也在LeetCodeGoogle Code Jam等挑战网站上看到过需要动态规划解题的题目, Google Foo Bar上的几场挑战赛也要求用动态规划解题。

我建议你尽可能多地尝试解决这个列表中的问题。TopCoder 上也有一个很棒的教程,标题是:动态规划——从入门到高级。很多动态规划问题都有相同的结构和模式,所以如果你每天解决 3 个动态规划问题,坚持两周左右,一段时间后你就能轻松识别并解决一个动态规划问题。

算法高级资源(可选

希望你喜欢这份资源列表。欢迎在Coderbyte上练习编程,并在下方评论区分享你认为有用的其他资源。

本文最初发表于Medium

文章来源:https://dev.to/coderbyte/improving-your-algorithms-data-struct-skills-2odo
PREV
正则表达式(Regex)完全指南
NEXT
如何打造一个能给未来雇主留下深刻印象的副业