List<List<Integer>> res = new ArrayList<>();
List<Integer> paht = new LinkedList<>();
res.add(new ArrayList(path));需要new ArrayList
在 Java 中,List 是一个接口,它不能直接被实例化。为了能够使用 List,需要用到它的实现类。ArrayList 就是 List 接口最常用的实现类,它是由数组实现的可变长度的列表。
在回溯算法中,res 保存所有符合条件的子集,每当找到一个新的子集时,要将它加入到 res 中。由于 Java 中所有的对象都是引用类型,如果不创建一个新的 ArrayList 对象来保存当前的子集,而是直接将 path 添加到 res 中,那么当 path 后续的元素改变时,之前添加到 res 中的子集也会随之改变。这样会导致最终得到的结果不正确。
因此,为了确保 res 中保存的子集不受 path 的影响,需要在每次添加子集到 res 中时,使用 new 操作符创建一个新的 ArrayList 对象,以保存当前的子集。