????????题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
? ? ? ? 编码实现:
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
backtrack(nums, 0, result);
return result;
}
public void backtrack(int[] nums, int index, List<List<Integer>> result) {
if (index == nums.length - 1) {
List<Integer> tempList = new ArrayList<>();
for (int num : nums){
tempList.add(num);
}
result.add(tempList);
return;
}
for (int i = index; i < nums.length; i++) {
swap(nums, index, i);
backtrack(nums, index + 1, result);
swap(nums, index, i);
}
}
private void swap(int[] nums, int i, int j) {
if (i != j) {
nums[i] ^= nums[j];
nums[j] ^= nums[i];
nums[i] ^= nums[j];
}
}
|