Permutations

来源:互联网 发布:达芬奇调色 知乎 编辑:程序博客网 时间:2024/06/05 20:13

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) {        if(num==null) return null;        List< List<Integer> > res=new ArrayList< List<Integer> >();        getPermutation(res,num,0);        return res;    }    public void getPermutation(List<List<Integer>> res,int []num,int begin){        if(begin==num.length){            List<Integer> a=new ArrayList<Integer>();            for(int i=0;i<num.length;i++){                a.add(num[i]);            }            res.add(a);            return;        }        for(int i=begin;i<num.length;i++){            swap(num,begin,i);            getPermutation(res,num,begin+1);            swap(num,begin,i);        }    }    public void swap(int[] num,int m,int n){        int tmp=num[m];        num[m]=num[n];        num[n]=tmp;    }}

0 0
原创粉丝点击