46. Permutations【LeetCode算法之旅之DFS】

来源:互联网 发布:js embed 属性 编辑:程序博客网 时间:2024/05/01 14:25

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]]
题意:求一个序列的各种组合。

思路:使用DFS策略。代码如下:

package leetcode;import java.util.ArrayList;import java.util.List;public class Solution {    private List<List<Integer>> list = new ArrayList<List<Integer>>();    private void dfs(int[] nums, List<Integer> subList){        if(subList.size() == nums.length){            list.add(subList);            return;        }        for (int i = 0; i < nums.length; i++){            if(!subList.contains(nums[i])){                List<Integer> subList2 = new ArrayList<Integer>();                subList2.addAll(subList);//subList2是对subList的复制                subList2.add(nums[i]);                dfs(nums, subList2);            }        }    }    public List<List<Integer>> permute(int[] nums) {        List<Integer> subList = new ArrayList<Integer>();        dfs(nums, subList);        return list;    }}


1 0
原创粉丝点击