视野无线登录
视野无线

一个实力超群的程序猿必须知道的数据结构有哪些?

> 交通

一个实力超群的程序猿必须知道的数据结构有哪些?

1050人浏览更新于 2023-06-02 13:44:04
回答
共4个回答
2017-03-21 18:25
+关注

算法

  1. 图搜索 (广度优先、深度优先)深度优先特别重要
  2. 排序
  3. 动态规划
  4. 匹配算法和网络流算法
  5. 正则表达式和字符串匹配

数据结构

  1. 图 (树尤其重要)
  2. Map
  3. 栈/队列
  4. Tries | 字典树

额外推荐

  • 贪婪算法
  • 概率方法
  • 近似算法

下面这个没有特定优先级

算法:

  • 三路划分-快速排序
  • 合并排序(更具扩展性,复杂度类似快速排序)
  • DF/BF 搜索 (要知道使用场景)
  • Prim / Kruskal (最小生成树)
  • Dijkstra (最短路径算法)
  • 选择算法

数据结构

  • HashMap (真的要知道所有哈希结构)
  • 图和树(红黑树很好学) (red-black trees are good to learn)
  • 堆(优先级队列)
  • 栈/队列(必须知道的基础内容)
  • Tries | 字典树

A *和遗传算法也很有趣。

2017-04-17 11:36
+关注

当然,这个问题取决于你想成为的程序员等级。水往低处流,人往高处走,我们不妨假设你想成为最顶级程序员,你需要知道:

  • 基本数据结构:所有C++标准模板库涉及的数据结构,包括:协议栈、队列、双端队列、集合、地图、优先队列。对我来说,我通常并不需要对这些队列多加思考,因为我对它们太熟悉了,我并不需要考虑太多,只要关注算法就可以。

  • 分离集、线段树、Fenwick树,这些数据结构在Codeforces、美国计算机协会竞赛上非常常见。

  • 数据结构串:特里结构就是一种后缀结构串。

在竞赛中,还有很多其他的数据结构,你可以在以后面临真正的问题时发现他们。

2018-12-08 13:35
+关注

下面是数据结构的知识图谱,好好掌握下吧

关于为什么要学习数据结构可以看看这个文章,告诉你为什么要学习数据结构:https://www.toutiao.com/i6632489540500062727/

2017-06-29 10:25
+关注

今晚有个讲当当、京东、淘宝等国内知名互联网公司技术架构和共性、互联网一般业务架构演变的直播,可能对你有用:http://www.toutiao.com/i6436609922707751426/

(不要被标题迷惑,其实讲的都是纯技术干货)

查看交通全部提问
查看更多文章