class Solution {
// 记录所有合法的排列可能
List<List<Integer>> ans = new LinkedList<>();
public List<List<Integer>> permute(int[] nums) {
// 记录路径
LinkedList<Integer> track = new LinkedList<>();
backtrack(nums, track);
return ans;
}
// 辅助函数,回溯遍历得到每条路径,路径记录在 track 中,在 nums 中选择,当 nums 中的元素全都在 track 中出现时结束
public void backtrack(int[] nums, LinkedList<Integer> track) {
// 结束条件
if (track.size() == nums.length) {
ans.add(new LinkedList(track));
return;
}
for (int i = 0; i < nums.length; i++) {
// 排除不合法的选择
if (track.contains(nums[i]))
continue;
// 做选择
track.add(nums[i]);
// 递归进入下一层决策树
backtrack(nums, track);
// 撤销选择
track.removeLast();
}
}
}
leecode-46-全排列
最新推荐文章于 2024-08-25 02:40:51 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)