permutations
看着简单,用了回溯的方法。
作者:liweiwei1419
链接:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这个作者讲的很详细,截了个图如下:

个人微改:
import java.util.ArrayList;
import java.util.List;
public class permutations {
public static void main(String args[]) {
int nums[] = new int[]{1,2,3};
List<List<Integer>> lists = permute(nums);
System.out.println(lists);
}
static List<List<Integer>> permute(int nums[]){
int len = nums.length;
List<List<Integer>> res = new ArrayList<>();
List<Integer> path = new ArrayList<>();
if(len==0) {
return res;
}
boolean used[] = new boolean[len];
dfs(nums,len,0,path,used,res);
return res;
}
static void dfs(int nums[],int len,int depth,List<Integer> path,boolean used[],List<List<Integer>> res) {
if(depth==len) {
res.add(new ArrayList<>(path));
return;
}
for(int i=0;i<len;i++) {
if(!used[i]) {
path.add(nums[i]);
used[i]=true;
dfs(nums,len,depth+1,path,used,res);
used[i]=false;
path.remove(path.size()-1);
}
}
}
}

本文介绍了如何使用Python的回溯算法解决LeetCode上的全排列问题,通过递归实现并提供了一个详细的示例,包括代码实现和关键步骤的解释。
629

被折叠的 条评论
为什么被折叠?



