必有的就是结果集合记录当前的状态的集合,我没有想到的是用visited的数组,其实我现在还没有理清楚哪些需要这个数组。boolean[] visited = new boolean[nums.length];
DFS方法中,长度相等则加入结果集,加入结果集的时候,创建了一个新数组,因为是引用类型。res.add(new ArrayList<>(curList));
然后就是常规的步骤:
遍历visited数组,没有访问过,则进行:
加入、visited 设置为true,dfs 、删除、visited 设置为false。
curList.remove(curList.size() - 1);
代码:
https://github.com/hanleirx/LeetCode/blob/master/46.%20%E5%85%A8%E6%8E%92%E5%88%97
网友评论