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

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

全部评论

相关推荐

02-26 16:52
门头沟学院 Java
Lunarloop:董事长亲自到ssob来要IM项目的技术方案来了
点赞 评论 收藏
分享
漂亮的海豚在炒股:把西电加粗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务