0
我工作的一個排列問題,我有下面的代碼:爲什麼我需要做list.add(new ArrayList <>(temp));在2D列表中添加列表時?
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
helper(list,new ArrayList<Integer>(), nums);
return list;
}
private void helper(List<List<Integer>> list, List<Integer> temp, int[] num) {
if (temp.size() == num.length) {
list.add(new ArrayList<>(temp));
}
else {
for (int i = 0; i < num.length; i++) {
if (temp.contains(num[i])) continue;
temp.add(num[i]);
helper(list, temp, num);
temp.remove(temp.size() - 1);
}
}
}
我不明白的是爲什麼我需要寫:的
list.add(new ArrayList<>(temp));
代替:
list.add(temp);
'new ArrayList <>(temp)'做什麼? –
如果你不這樣做會怎樣? – 2016-12-31 03:45:23
如果我做list.add(temp);我在答案中得到空列表。 – user2817869