import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型一维数组
* @return int整型ArrayList<ArrayList<>>
*/
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
public ArrayList<ArrayList<Integer>> permute (int[] num) {
// write code here
// 要求字典序返回 先排序
Arrays.sort(num);
boolean[] visited = new boolean[num.length];
backTrace(num, visited, new ArrayList<Integer>());
return res;
}
private void backTrace(int[] num, boolean[] visited, ArrayList<Integer> list) {
if (list.size() == num.length) {
res.add(new ArrayList<>(list));
return;
}
for (int i=0; i<num.length; i++) {
if (visited[i]) continue;
list.add(num[i]);
visited[i] = true;
backTrace(num, visited, list);
visited[i] = false;
list.remove(list.size()-1);
}
}
}