- 二维数组的查找:每行向右递增,每列向下递增 从左下角开始,如果大于当前值向右移,如果小于当前值向上移
- 替换空格
- 从尾到头打印链表
- 根据二叉树的前序序列和中序序列重建二叉树
- 获取前序序列的第一个为树顶
- 查找树顶在中序中的位置,可以将中序序列分为两份:左子树和有子树
- 根据左子树和右子树的长度找到前序序列中对应的子树部分,递归求解
- 两个栈实现队列
- 旋转数组的最小数字
- 斐波那契数列
- 青蛙跳台阶: DP transition: fn(n) = fn(n-1) + fn(n-2)
- 变态跳台阶: 因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级 跳1级,剩下n-1级,则剩下跳法是f(n-1) 跳2级,剩下n-2级,则剩下跳法是f(n-2) 所以f(n)=f(n-1)+f(n-2)+…+f(1) 因为f(n-1)=f(n-2)+f(n-3)+…+f(1) 所以f(n)=2*f(n-1)
- 矩形覆盖
- 二进制树中1的个数:用1不断左位移当做滑动窗口与原数字做与操作
- 数值的整数次方
- 调整数组顺序使奇数位于偶数前面
- 链表的倒数第k个数字:两个游标相距k,同时向后移动
- 反转链表
- 合并两个有序的链表:归并
- 树的子结构:递归判断是否为子树,当且紧当当前节点、当前节点的左节点、当前节点的右节点都相等时才为真
- 二叉树的镜像
- 顺序/回形打印矩阵:注意矩阵边界
- 包含min函数的栈
- 栈的压入、弹出序列
- 从上往下打印二叉树: 树的广度优先遍历,借助队列实现
- 二叉搜索树的后序遍历序列