编程能力是”对不同复杂度的问题(领域级/系统级/问题级),采用相对应工具降低复杂度,最后击破”的能力

排序
快速排序 归并排序 堆排序
链表
反转链表 复制复杂链表 链表的公共节点 链表环的入口 删除重复的有序链表节点 链表相加 链表两两交换
二叉树
重建二叉树 判断是否是子树 判断数组是 BST 后序遍历 和为定值的所有路径 判断是否是二叉搜索树
栈和队列
最小栈 栈实现队列 括号的合法序列
位运算
位运算实现加法 二进制中 1 的个数 只出现了一次的数 个数多于一半的数 汉明距离
搜索
基础二分搜索 有序数组转化为BST 小岛数量 无重复数组的全排列 有重复数组的全排列 无重复数组的子序列 有重复数组的子序列 N皇后问题 N sum 问题
动态规划
股票买卖最大利润 抢劫房子 最长回文串 最大连续子数组 二维数组中和最小路径 回文子串个数 爬楼梯的最小开销 最大和子序列 最大乘积子序列 编辑距离
随机算法
完美洗牌 数据流中概率相等的抽取
高级数据结构
LRU 缓存
并发
生产者消费者模型 实现一个 Semaphore 类 Print In Order
函数式编程