1、偏移量实现环形遍历二维数组
用以下数组表示四个方向
int[][] d = new int[][]{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
2、求一个集合中最接近x的数是什么
TreeSet.ceiling 求>= x 中的最小数
TreeSet.floor 求 <= x 中的最大数
3、向上取整 比如 a/b
a/b = (a + b - 1 ) / b
4、对一个集合每次取k / 2,有奇偶性问题
k = k - k / 2
5、存在重复的集合里选不重复的子集问题,两种做法
a、决策去重
b、for迭代里判断当前是不是第一个用
Lc90:子集2
Lc40: 组合组合2
Lc47:全排列2
6、有向图的拓扑排序
将入度为0的入队,bfs处理
Lc204:课程表
7、循环数组问题,即到了尾部还能从头开始遍历
可以用 i < 2 * n 然后 index = i % n来做
8、如何快速判断两个字符串是否有相同字母(都是小写字母)
可以用int表示字符串26个字母是否有出现,然后再将两int做个与运算,结果是否大于0
9、边界问题复杂题型
lc300:最长递增子序列
计算器系列