import java.util.*;
public class Solution {
private void swap(int[] nums, int i, int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
private void perm2(int[] nums, int n, List<List<Integer>> result, Set<String> in) {
if (n == 1) {
String saveToSet = null;
for(int d : nums){
saveToSet += String.valueOf(d);
}
if(!in.contains(saveToSet)) {
in.add(saveToSet);
List<Integer> onePermutation = new ArrayList<>();
for (int d : nums) {
onePermutation.add(d);
}
result.add(onePermutation);
for(int d : nums){
System.out.print(d);
}
System.out.println();
}
return;
}
for (int i = 0; i < n; i++) {
swap(nums, i, n - 1);
perm2(nums, n - 1, result, in);
swap(nums, i, n - 1);
}
}
public List<List<Integer>> permuteUnique(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
Set<String> in = new HashSet<>();
perm2(nums, nums.length, result, in);
return result;
}
public static void main(String[] args){
int[] nums = {3,3,1,2,3,2,3,1,};
new Solution().permuteUnique(nums);
}
}
全排列-去重复
最新推荐文章于 2021-12-24 22:02:36 发布