题目链接
法一(回朔法)
private void backTracking(List<List<Integer>> ans, List<Integer> path, int[] nums) {
if (path.size() == nums.length) {
ans.add(new LinkedList<>(path));
return;
}
for (int num : nums) {
if (!path.contains(num)) {
path.add(num);
backTracking(ans, path, nums);
path.remove(path.size() - 1);
}
}
}
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> ans = new LinkedList<>();
List<Integer> path = new LinkedList<>();
backTracking(ans, path, nums);
return ans;
}
本地测试
lay.showTitle(46);
int[] nums46 = new int[]{2,3,5};
Solution46 sol46 = new Solution46();
List<List<Integer>> ans46 = sol46.permute(nums46);
arrayOpt.showIntLists(ans46);