0
私は順列の問題に取り組んでいたし、私は以下のコードを持っている:なぜ私はlist.add(新しい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)'とは何ですか? –
しないとどうなりますか? –
もし私がlist.add(temp);私は私の答えで空のリストを取得します。 – user2817869