打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
十大常用数据结构
一、栈: 

1、后缀表达式的求值; 
2、中缀到后缀表达式的转换; 
3、深度优先搜索的非递归实现; 
4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlgn)算法。 

二、队列: 
1、树的层序遍历; 
2、广度优先搜索; 
3、Bellman-Ford算法的SPFA实现; 
4、网络流中FF算法的Edmonds-Karp实现,以及Preflow算法的队列优化实现。 


三、二叉搜索树: 

1、对大量的关键字的索引查找; 
2、有很多平衡策略以改善其平均性能: 
常用平衡树:AVL,红黑树,随机化BST,Splay Tree,Treap(或叫笛卡儿树)。 

四、散列表(hash表): 
1、一般针对值域较大但状态很稀疏的应用,比如状态压缩记忆化搜索; 
2、实现映射功能。 

五、检索树(Trie): 
1、一般用于字符串索引算法,速度快,但占用空间较大(相对hash); 
2、常用的改进结构:Patricia线索树,多叉检索树(TST)。 

六、优先队列: 

1、常用的是二叉堆的实现,具体应用如堆排序和Dijkstra算法; 
2、当需要快速合并两个优先队列时,常用二项式队列,实现简单。 
3、注意最大最小堆的配对使用。 

七、线段树和树状数组: 

1、两者都可以用于离散对象的统计; 
2、后者的步进函数的性质和应用值得注意; 
3、前者基本上适用于任何的区间操作,如求区间最值,改变区间的值等。 
4、线段树还可以用于优化状态的枚举,经常和动态规划结合。 

八、后缀树与后缀数组: 

1、总体规律是两者的实现都比较复杂,前者更甚,但是前者的功能也更强大; 
2、几乎可以解决所有常见的关于字符串的算法,如最长回文子串,最长重复子串,以及很多的模式匹配问题。 

九、并查集: 

1、解决无向图的连通性问题,如用于Kruskal算法; 
2、解决等价关系的查询(这是它的主要用武之地),如05年Baidu之星初赛的石头剪子布游戏; 
3、优点是实现异常简单,缺点是合并后无法分离,若需要可以选择用动态树。 

十、邻接表和边表: 

1、表示图的最直接的方法; 
2、后者更省空间,并且在一定程度上更好用,比如Bellman-Ford算法。 
ps:数组、链表太基础不在考虑之列。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Noi数据结构知识点
看完字节大佬的算法刷题宝典,我直接手撕了500道算法算法题
面试常见的四种算法思想,全在这里了
[转载]背包问题九讲(转)
泄题了?Java程序员最可能被考到的面试题,命中率极高!
GitHub Python项目推荐|数据结构和算法必知必会的50个代码实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服