【发布时间】:2014-06-05 14:09:31
【问题描述】:
我正在查看 leetcode 上排列问题的代码。例如, [1,2,3] 有以下排列: [1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2] 和 [3,2,1]。 我发现有一句话
ArrayList<Integer> temp = new ArrayList<Integer>(l);
我不知道为什么这里需要将“l”分配给“temp”。我尝试了 current.add(l) 直接但给了我错误的答案。你能帮我解决这个问题吗?
public class Solution {
public ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
//start from an empty list
result.add(new ArrayList<Integer>());
for (int i = 0; i < num.length; i++) {
//list of list in current iteration of the array num
ArrayList<ArrayList<Integer>> current = new ArrayList<ArrayList<Integer>>();
for (ArrayList<Integer> l : result) {
// # of locations to insert is largest index + 1
for (int j = 0; j < l.size()+1; j++) {
// + add num[i] to different locations
l.add(j, num[i]);
ArrayList<Integer> temp = new ArrayList<Integer>(l);
current.add(temp);
//System.out.println(temp);
// - remove num[i] add
l.remove(j);
}
}
result = new ArrayList<ArrayList<Integer>>(current);
}
return result;
}
}
【问题讨论】: