class Solution {
public List<List<Integer>> permute(int[] nums) {
//结果集合
List<List<Integer>> res = new ArrayList<>();
//visited是标记作用
int[] visited = new int[nums.length];
//new ArrayList<Integer>() 是temp作用
backtrack(res, nums, new ArrayList<Integer>(), visited);
return res;
}
void backtrack(List<List<Integer>> res, int[] nums, ArrayList<Integer> temp, int[] visited) {
if (temp.size() == nums.length) {
res.add(new ArrayList(temp));
}
for (int i = 0; i < nums.length; i++) {
if (visited[i] == 1) {
continue;
}
visited[i] = 1;
temp.add(nums[i]);
backtrack(res, nums, temp, visited);
visited[i] = 0;
temp.remove(temp.size() - 1);
}
}
}
回溯算法模板
最新推荐文章于 2023-04-18 14:10:08 发布