问题描述
给定一个 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
类似问题:全排列
public static List<String> range(int[] nums){
if(null == nums || nums.length == 0){
return Collections.emptyList();
}
List<Integer> numList = new LinkedList<>();
Arrays.sort(nums);
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++) {
if(i != 0 && nums.get(i) == nums.get(i - 1)){
continue;
}
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, 1, 2});
System.out.println();
}