非递归
January 1, 2025Less than 1 minute
非递归
递归改非递归
- 尾递归
- 非尾递归
- 栈模拟
- 特殊思路
二叉树非递归
- 栈模拟
- 前序
- 中序
- 后序
- Moris
组合类
- 二进制枚举
- 二叉树遍历
- 组合数
排列类
- 下一个排列
- 栈模拟(count)
List<List<Integer>> combine(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
var combs = new ArrayList<List<Integer>>();
for (int i = 0; i < (1 << n); i++) {
var comb = new ArrayList<Integer>();
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) != 0) {
comb.add(nums[j]);
}
}
combs.add(comb);
}
return combs;
}
List<List<Integer>> permute(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
var perms = new ArrayList<List<Integer>>();
while (nums != null) {
var perm = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
perm.add(nums[i]);
}
perms.add(perm);
nums = nextPermutation(nums);
}
return perms;
}