注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 yanjinbin 于 2019-7-28 23:02 编辑
- // 46. 全排列
- public List<List<Integer>> permute(int[] nums) {
- List<List<Integer>> ret = new ArrayList<>();
- LinkedList<Integer> sub = new LinkedList<>();
- boolean[] visit = new boolean[nums.length];
- dfsPermute(nums, 0, visit, sub, ret);
- return ret;
- }
- public void dfsPermute(int[] nums, int level, boolean[] visit, LinkedList<Integer> sub, List<List<Integer>> ret) {
- if (level == nums.length) {
- // 正确姿势
- // ret.add(new ArrayList<>(sub));
- // 错误姿势
- ret.add(sub);
- return;
- }
- for (int i = 0; i < nums.length; i++) {
- if (visit[i]) continue;
- visit[i] = true;
- sub.addLast(nums[i]);
- dfsPermute(nums, level + 1, visit, sub, ret);
- sub.pollLast();
- visit[i] = false;
- }
- }
复制代码
我进行debug的时候 输入参数nums={1,2,3}
发现第一次添加 {1,2,3} return之后,轮到sub.pollLast(),
sub变成{1,2},
ret里面添加的sub结果 元素个数也会变了 ? 为什么呢?
我 有点不明白了 这是什么原因呢 [/i][/i][/i][/i]最终输出结果 ---> [[], [], [], [], [], []]
[i][i][i]PS: 代码思路参考 https://www.cnblogs.com/grandyang/p/4358848.html [/i][/i][/i]原题链接:https://leetcode.com/problems/permutations/
输出结果如下
|