问一个问题,递归求全排列

import java.util.ArrayList;

public class Permute {
public static void main(String[] args) {
int[] num = { 1, 2, 3 };
System.out.println(permute(num));
}

public static ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
getPermute(result, num, 0);
return result;
}

public static void getPermute(ArrayList<ArrayList<Integer>> result, int[] num, int start) {
if (start == num.length) {    //此处num.length-1,得出的结果也是一样的两者有什么区别么
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < num.length; i++) {
list.add(num[i]);
}
result.add(list);
} else {
for (int i = start; i < num.length; i++) {
swap(num, i, start);
getPermute(result, num, start + 1);
swap(num, i, start);
}
}

}

public static void swap(int[] nums, int i, int j) {
int temp;
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}

全部评论

相关推荐

求内推找工作
在写面经的00后很英俊:别听他们扯犊子说技术栈放前面,你是校招生,把你荣誉证书和项目经历换个位置,你那么多奖,能留住hr的眼光,才会继续看下去
点赞 评论 收藏
分享
02-18 21:55
门头沟学院 Java
拍打星:谁说的,焦虑只是一种心理状态,啥都不干也可以焦虑,不如说很多人就是因为啥都不干才导致焦虑感加重
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务