算法的一些小技巧

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:最长递增子序列
计算器系列
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容