给定一个不含重复数字的数组?
nums
?,返回其?所有可能的全排列?。你可以?按任意顺序?返回答案。
class Solution {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> data = new ArrayList<>();
public List<List<Integer>> permute(int[] nums) {
//全排列将数组元素存放到列表中
for (int num : nums){
data.add(num);
}
dfs(0);
return ans;
}
private void dfs(int index){
if(index == data.size() - 1){
ans.add(new ArrayList<>(data));
return;
}
for (int i = index; i < data.size(); i++){
//将data.get(i)固定在x位置;
swap(i,index);
//递归固定下一个元素
dfs(index + 1);
//撤销交换
swap(i,index);
}
}
//交换元素位置
private void swap( int resource, int target){
int temp = data.get(resource);
data.set(resource,data.get(target));
data.set(target,temp);
}
}