问题描述
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
类似问题: 全排列2
public static List<String> range(int[] nums){
if(null == nums || nums.length == 0){
return Collections.emptyList();
}
List<Integer> numList = new LinkedList<>();
for(int i = 0; i < nums.length; i++){
numList.add(nums[i]);
}
List<String> result = new ArrayList<String>();
div(result, numList, new StringBuilder(), nums.length);
return result;
}
public static void div(List<String> result, List<Integer> nums, StringBuilder sb, int size){
if(nums.size() == 0){
result.add(sb.toString());
}
int length = nums.size();
for(int i = 0; i < length; i++) {
int tmp = nums.remove(i);
sb.append(tmp);
div(result, nums, sb, size);
nums.add(i, tmp);
sb.deleteCharAt(sb.length() - 1);
}
}
public static void main(String[] args) {
List<String> result = range(new int[] {1, 2, 3});
System.out.println();
}