所有方案
December 17, 2024Less than 1 minute
所有方案
使用BFS找所有方案,33
一个方案=一条路径
求所有方案=求所有路径
BFS 善于解决求连通块问题
把路径看做点,把路径的变化关系看做点的连接关系
这样就把找所有路径问题变成了找所有连通点的问题
BFS擅长找连通块
全子集问题
求一个集合的所有子集
画图了解两种不同的搜索树
第一种
List<List<Integer>> combine(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> queue = new ArrayList<>();
int index = 0;
queue.add(new ArrayList<>());
while (index < queue.size()) {
List<Integer> subset = queue.get(index++);
for (int i = 0; i < nums.length; i++) {
if (subset.size() != 0 && subset.get(subset.size() - 1) >= nums[i]) {
continue;
}
List<Integer> newSubset = new ArrayList<>(subset);
newSubset.add(nums[i]);
queue.add(newSubset);
}
}
return queue;
}
第二种
List<List<Integer>> combine(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> queue = new ArrayList<>();
queue.add(new ArrayList<>());
for (int num : nums) {
int size = queue.size();
for (int i = 0; i < size; i++) {
List<Integer> newSubset = new ArrayList<>(queue.get(i));
newSubset.add(num);
queue.add(newSubset);
}
}
return queue;
}
二叉树序列号反序列化
String serialize(TreeNode root) {
if (root == null) {
return "{}";
}
List<TreeNode> queue = new ArrayList<TreeNode>();
}