一、题目内容

image.png

二、题解

解法1:

思路

boolean visited[]

代码

  1. public class Solution {
  2. ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
  3. ArrayList<Integer> tempAns = new ArrayList<>();
  4. boolean[] visited;
  5. public ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
  6. Arrays.sort(num);
  7. visited = new boolean[num.length];
  8. recur(num, 0);
  9. return ans;
  10. }
  11. private void recur(int[] num,int count){
  12. if(count == num.length){
  13. ans.add(new ArrayList(tempAns));
  14. return;
  15. }
  16. for(int i = 0;i<num.length;i++){
  17. if(i>0&&!visited[i]&&!visited[i-1]&&num[i] == num[i-1]){
  18. continue;
  19. }
  20. if(!visited[i]){
  21. visited[i] = true;
  22. tempAns.add(num[i]);
  23. recur(num,count+1);
  24. visited[i] = false;
  25. tempAns.remove(tempAns.size()-1);
  26. }
  27. }
  28. }
  29. }