题目
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]
.
无重复数字的全排列就是每个数字轮流排第一,然后剩余的再全排列。
代码
import java.util.ArrayList; public class Permutations { private ArrayList<ArrayList<Integer>> result; private int N; private ArrayList<Integer> list; public ArrayList<ArrayList<Integer>> permute(int[] num) { result = new ArrayList<ArrayList<Integer>>(); N = num.length; list = new ArrayList<Integer>(); for (int i = 0; i < N; ++i) { list.add(num[i]); } solve(0); return result; } private void solve(int k) { if (k >= N) { result.add(new ArrayList<Integer>(list)); return; } for (int i = k; i < N; ++i) { swap(i, k); solve(k + 1); swap(i, k); } } private void swap(int i, int j) { int temp = list.get(i); list.set(i, list.get(j)); list.set(j, temp); } }
LeetCode | Permutations,布布扣,bubuko.com
原文:http://blog.csdn.net/perfect8886/article/details/22312249