基础数据结构
1. 单链表
2. 栈和队列
2.1 如何使用栈实现队列
- 比如:实现一个图的广度优先遍历,用栈来实现(要队列)
- 用两个栈,第一个栈用来存,当用户需要数据时,导入到第二个栈中(一次性倒完),这样顺序就对了
- 如果第二个栈没拿完,就不能够导入数据到第二个
java
// push栈向pop栈倒入数据
private void pushToPop() {
if (stackPop.empty()) {
while (!stackPush.empty()) {
stackPop.push(stackPush.pop());
}
}
}2.2 如何使用队列实现栈
- 两个队列交换着使用
- 对于加入数据,在当前有数据的那个队列加入即可
- 当用户需要弹出时,将当前队列的前n-1个数据入队到另一个空队列,然后最后一个数据出队
3.递归
形如 T(N) = a * T(N/b) + O(N^d) 可以用Master公式来确定其时间复杂度
- log(b , a ) < d , 复杂度为O(N^d)
- log(b, a) > d , 复杂度为O(N^log(b,a))
- v iolog(b, a) = d, 复杂度为O(N^d * logN)
哈希表和红黑树
TreeMap O(logN)
阿源的知识库