无重复数字的情况下:
public class Solution {
public List> permute(int[] num) {
if (num.length == 0) {
return null;
}
return helper(num, 0);
}
List> helper(int[] num, int curIndex) {
List> result = new ArrayList>();
if (curIndex == num.length-1) {
List list = new ArrayList();
list.add(num[curIndex]);
result.add(list);
return result;
}
List> preResult = helper(num, curIndex + 1);
int curNum = num[curIndex];
for (List prelist : preResult) {
for (int i = 0; i <= prelist.size(); i++) {
List newList = new ArrayList(prelist);
newList.add(i, curNum);
result.add(newList);
}
}
return result;
}
}