热文导读 | 点击标题阅读
2017 春季最酷、最受欢迎的 30 个 Android 库,快收藏!
吊炸天!74款APP完整源码!
阿里震撼业界—推出首个非侵入式热修复方案Sophix,颠覆移动端传统发版更新流程!
本文汇总了技术面试时需要了解的算法和数据结构知识。
链表
链表是一种由节点(Node)组成的线性数据集合,每个节点通过指针指向下一个节点。它是一种由节点组成,并能用于表示序列的数据结构。
单链表:每个节点仅指向下一个节点,最后一个节点指向空(null)。
双链表:每个节点有两个指针p,n。p指向前一个节点,n指向下一个节点;最后一个节点指向空。
循环链表:每个节点指向下一个节点,最后一个节点指向第一个节点。
时间复杂度:
索引:O(n)
查找:O(n)
插入:O(1)
删除:O(1)
栈
队列
树
二叉树
二叉树是一个树形数据结构,每个节点最多可以有两个子节点,称为左子节点和右子节点。
满二叉树(Full Tree):二叉树中的每个节点有 0 或者 2 个子节点。
完美二叉树(Perfect Binary):二叉树中的每个节点有两个子节点,并且所有的叶子节点的深度是一样的。
完全二叉树:二叉树中除最后一层外其他各层的节点数均达到最大值,最后一层的节点都连续集中在最左边。
二叉查找树
字典树
树状数组
线段树
堆
哈希
图
排序
快速排序
稳定:否
时间复杂度
最优:O(nlog(n))
最差:O(n^2)
平均:O(nlog(n))
合并排序
桶排序
图算法
深度优先搜索
广度优先搜索
Floyd-Warshall 算法
最小生成树算法
Kruskal 算法
贪心算法
位运算
运行时分析
大 O 表示
小 O 表示
大 Ω 表示
小 ω 表示
Theta Θ 表示
以为这就结束了?No,还有 LeetCode 题目的参考解答代码
Java 代码目录如下:
看完本文有收获?请分享给更多人
Java和Android架构
欢迎关注我们,一起讨论技术,扫描和长按下方的二维码可快速关注我们。或搜索微信公众号:JANiubility。
公众号:JANiubility