LeetCode-46 Permutations(全排列)
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
, and [3,2,1]
.
public class Solution {
public List<List<Integer>> permute(int[] num) {
List<List<Integer>> llist = new ArrayList<List<Integer>>();
quanpailie(num, 0, num.length, llist);
return llist;
}
public static void swap(int[] num,int a,int b) {
int temp = num[a];
num[a] = num[b];
num[b] = temp;
}
public static void quanpailie(int[] num,int l,int n,List<List<Integer>> llist){
if (l >= n) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < num.length; i++) {
list.add(num[i]);
}
llist.add(list);
}
for (int i = l; i < n; i++) {
swap(num, i, l);
quanpailie(num, l+1, n,llist);
swap(num, i, l);
}
}
}
Runtime: 264 ms
分析:很重要也很基本的全排列算法。
.