Permutations

来源:互联网 发布:上海华讯网络 编辑:程序博客网 时间:2024/06/04 18:56

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[] a) {        List<List<Integer>> result = new ArrayList<List<Integer>>();        List<Integer> list = new ArrayList<Integer>();        helper(a, list, result);        return result;    }    private void helper(int[] nums, List<Integer> list,List<List<Integer>> ret) {        if (list.size() == nums.length) {            ret.add(new ArrayList<Integer>(list));            return;        }        for (int i = 0; i < nums.length; i++) {            if (list.contains(nums[i])) continue;            list.add(nums[i]);            helper(nums, list, ret);            list.remove(list.size() - 1);        }    }}


0 0
原创粉丝点击