JavaScript DataStructure and Algorithm with TypeScript Questions on LeetCode
-
- 二叉树的实现
- 对称二叉树 | LeetCode[101]
- 二叉树镜像
- 检测二叉平衡树
- 二叉树的层次遍历
- 根据先序遍历和中序遍历结果重建二叉树
- 根据中序遍历和后序遍历结果重建二叉树
- 路径总和
- 二叉树展开为链表 | LeetCode [114]
-
- 链表的实现
- 链表的查询,插入,删除
- 链表的正向遍历与反向遍历
- 反转链表 | LeetCode [206]
- 合并链表 | LeetCode [21]
- 删除链表的倒数第N个节点 | LeetCode [19]
- 链表节点交换 | LeetCode [24]
- 分隔链表 | LeetCode [86]
- 反转链表 II | LeetCode [206]
- 重排链表 | LeetCode [143]
-
- 栈的实现
- 栈的基础操作
- 栈的入序和出序序列匹配检测 | LeetCode [946]
-
- 队列的实现
- 队列的基础操作
- 循环队列的实现和基础操作 | LeetCode [622]
- 循环双端队列 | LeetCode [641]
-
- 堆的实现
- 堆的基础操作
一个算法的时间复杂度反映了程序运行从开始到结束所需要的时间。把算法中基本操作重复执行的此处作为算法的时间复杂度。
O(1)
: 常数复杂度O(log n)
: 对数复杂度O(n)
: 线性时间复杂度O(n^2)
: 平方复杂度O(n^3)
: 立方复杂度O(2^n)
: 指数复杂度O(!n)
: 阶乘复杂度
空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需内存有预先估计。
一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。