Skip to content

基础数据结构 ​

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)