您的位置:首页 > 其它

Leetcode Permutations

2015-04-15 11:32 281 查看
题目地址:https://leetcode.com/problems/permutations/

题目分析:很明显可以使用递归,先将起始位置与后面的每个数字交换位置,然后将起始位置往后移以为,以该起始位置为起点求排列,依次类推即可使用递归法。

题目解答:

import java.util.ArrayList;
import java.util.List;

public class Solution {
public List<ArrayList<Integer>> permute(int[] num) {
List<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
if(num == null || num.length == 0){
return ret;
}

permute(num,0,ret);

return ret;
}

private void permute(int[] num,int start,List<ArrayList<Integer>> res){
if(start == num.length - 1){
ArrayList<Integer> temp = new ArrayList<Integer>();
for(int i=0;i<num.length;i++){
temp.add(num[i]);
}
res.add(temp);
return;
}

for(int i=start;i<num.length;i++){
int temp = num[start];
num[start] = num[i];
num[i] = temp;

permute(num,start+1,res);

temp = num[start];
num[start] = num[i];
num[i] = temp;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: