46. Permutations

来源:互联网 发布:家居装修设计软件 编辑:程序博客网 时间:2024/06/06 03:10

Given a collection of distinct 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],  [3,2,1]]
在leetcode的topsulotion里有这类题的一套模板:A general approach to backtracking questions in Java (Subsets, Permutations, Combination Sum, Palindrome Partitioning)。会发现用这套模板解体,基本就是变一两行的事情,代码如下:

public class Solution {    public List<List<Integer>> permute(int[] nums) {        List<List<Integer>> result = new ArrayList<List<Integer>>();        backtrack(result, new ArrayList<Integer>(), nums);        return result;    }    public void backtrack(List<List<Integer>> list, List<Integer> tempList, int[] nums) {        if (tempList.size() == nums.length) {            list.add(new ArrayList<Integer>(tempList));        }        for (int i = 0; i < nums.length; i ++) {            if (tempList.contains(nums[i])) {                continue;            }            tempList.add(nums[i]);            backtrack(list, tempList, nums);            tempList.remove(tempList.size() - 1);        }    }}

0 0
原创粉丝点击