用java语言实现全排列问题
时间: 2024-02-23 07:02:52 浏览: 104
Java 数组的全排列问题
3星 · 编辑精心推荐
下面是使用Java语言实现全排列问题的代码:
```java
import java.util.ArrayList;
import java.util.List;
public class Permutation {
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
boolean[] visited = new boolean[nums.length];
backtrack(nums, new ArrayList<>(), visited, res);
return res;
}
private static void backtrack(int[] nums, List<Integer> path, boolean[] visited, List<List<Integer>> res) {
if (path.size() == nums.length) { // 如果当前路径中的元素个数等于数组长度,说明已经找到一组排列
res.add(new ArrayList<>(path)); // 将当前路径添加到结果集中
return;
}
for (int i = 0; i < nums.length; i++) {
if (visited[i]) continue; // 如果当前元素已经被访问过,则跳过
visited[i] = true; // 标记当前元素为已访问
path.add(nums[i]); // 将当前元素添加到路径中
backtrack(nums, path, visited, res); // 继续回溯
visited[i] = false; // 恢复当前元素为未访问状态
path.remove(path.size() - 1); // 将当前元素从路径中移除
}
}
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> res = permute(nums);
System.out.println(res);
}
}
```
运行上述代码,可以得到输出:
```
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
```
这些排列是由输入数组 `[1, 2, 3]` 中的元素生成的。
阅读全文