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

    xiaoxiao2021-03-25  98

    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; } }

    转载请注明原文地址: https://ju.6miu.com/read-26363.html

    最新回复(0)