fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. permute(1,2,3);
  13. }
  14.  
  15. public static List<List<Integer>> permute(int... nums) {
  16. List<List<Integer>> list = new ArrayList<>();
  17. // Arrays.sort(nums); // not necessary
  18. backtrack(list, new ArrayList<>(), nums, "");
  19. return list;
  20. }
  21.  
  22. private static void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, String spaces){
  23. if(tempList.size() == nums.length){
  24. list.add(new ArrayList<>(tempList));
  25. } else{
  26. for(int i = 0; i < nums.length; i++){
  27. if(tempList.contains(nums[i]))
  28. continue;
  29. System.out.println(spaces + "Adding: "+nums[i]);
  30. tempList.add(nums[i]);
  31. backtrack(list, tempList, nums, spaces + " ");
  32. System.out.println(spaces + "Removing: "+nums[i]);
  33. tempList.remove(tempList.size() - 1);
  34. }
  35. }
  36. }
  37. }
Success #stdin #stdout 0.04s 4386816KB
stdin
Standard input is empty
stdout
Adding: 1
  Adding: 2
    Adding: 3
    Removing: 3
  Removing: 2
  Adding: 3
    Adding: 2
    Removing: 2
  Removing: 3
Removing: 1
Adding: 2
  Adding: 1
    Adding: 3
    Removing: 3
  Removing: 1
  Adding: 3
    Adding: 1
    Removing: 1
  Removing: 3
Removing: 2
Adding: 3
  Adding: 1
    Adding: 2
    Removing: 2
  Removing: 1
  Adding: 2
    Adding: 1
    Removing: 1
  Removing: 2
Removing: 3