Title: Given A collection of numbers, return all possible permutations.
For example,
[1,2,3]The following permutations:
[1,2,3],,,,, [1,3,2] [2,1,3] [2,3,1] [3,1,2] and[3,2,1]
Idea: Recently are in the DFS, the first reaction is can use the idea of DFS, the only need to pay attention to is in the process of traversal, to see whether it is already selected numbers, here with set to troubleshoot, the idea is relatively simple.
Code:
PublicList<list<integer>> Permute (int[] nums) {List<List<Integer>> req =NewArraylist<list<integer>>(); List<Integer> temp =NewArraylist<integer>(); Set<Integer> set =NewHashset<integer>(); DFS (req, temp, set, Nums,0); returnreq; } Public voidDFS (list<list<integer>> req, list<integer> temp, set<integer> Set,int[] Nums,intLevel ) { //level record number of layers traversed if(Level = =nums.length) {Req.add (NewArraylist<integer>(temp)); return; } for(inti = 0; i < nums.length; i++){ if(Set.contains (Nums[i]))Continue; Temp.add (Nums[i]); Set.add (Nums[i]); level++; DFS (req, temp, set, nums, level); level--; Set.remove (Temp.get (temp.size ()-1)); Temp.remove (Temp.size ()-1 ); } }
[Leetcode-java] Permutations