一.题目描述
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
https://leetcode-cn.com/problems/permutations/
二.代码
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
if (nums.length == 0) {
return res;
}
helper(nums, 0, nums.length, res);
return res;
}
public void helper(int[] nums, int start, int end, List<List<Integer>> res) {
if (start == end - 1) {
List<Integer> item = new ArrayList<>();
for (int num : nums) {
item.add(num);
}
res.add(item);
return;
}
for (int i = start; i < end; ++i) {
swap(nums, start, i);
helper(nums, start + 1, end, res);
swap(nums, start, i);
}
}
public void swap(int[] nums, int index1, int index2) {
if (index1 != index2) {
int tmp = nums[index1];
nums[index1] = nums[index2];
nums[index2] = tmp;
}
}版权声明:本文为pubgNO1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。