Permutation I
2016-05-12 08:51
141 查看
【题目】Given a collection of numbers, return all possible permutations.
For example,
and
For example,
[1,2,3]have the following permutations:
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
and
[3,2,1]
【题意】
全排列
【分析】遍历字符串,然后将当前遍历的字符和首字符交换位置,调用本函数处理首字符之后的子字符串,函数执行完后,再调换回来。在不需要复制字符串的情况下,避免了每次递归函数相互之间的影响。实现:
public ArrayList<ArrayList<Integer>> permutations(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
permute(num, 0, result);
return result;
}void permute(int[] num, int start, ArrayList<ArrayList<Integer>> result) {if (start >= num.length) {
ArrayList<Integer> item = convertArrayToList(num);
result.add(item);
}for (int j = start; j <= num.length - 1; j++) {
swap(num, start, j);
permute(num, start + 1, result);
swap(num, start, j);
}
}private ArrayList<Integer> convertArrayToList(int[] num) {
ArrayList<Integer> item = new ArrayList<Integer>();
for (int h = 0; h < num.length; h++) {
item.add(num[h]);
}
return item;
}private void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
相关文章推荐
- eerTyraniBafonoitazilaireSredroerPyfireV.331
- xamarin遇到的问题
- 【学习】AndroidStudio使用
- public static void main(String[] args)
- bzoj 4390: [Usaco2015 dec]Max Flow(树链剖分+手写栈)
- 解决 Apache服务器下,访问出现"You don't have permission to …"
- 【学习】Git
- AJAX的原理―如何做到异步和局部刷新【实现代码】
- 去除字符串左右两边的空格
- 每周更新学习进度表--第八周
- zmNgFrameWork 架构升级ng1.5和md5静态资源缓存方案【angular1.x】
- iOS开发之AFNetworking 3.0.4使用
- Deep Learning学习 之 卷积神经网络(CNN)
- 2015-2016-2 《Java程序设计》 游戏化
- 国内云建设普遍缺失的一环:云管理平台
- HDU 5421 Victor and String(回文树)
- HDU 5421 Victor and String(回文树)
- JAVA作业(6)
- MyBatis对应的xml的数据类型
- 面向项目(九)—— 交叉工具链