查看: 693| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 求助~LT 46 全排列 这道题目 ,没看懂代码错在哪里

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 yanjinbin 于 2019-7-28 23:02 编辑

  1.     // 46. 全排列
  2.     public List<List<Integer>> permute(int[] nums) {
  3.         List<List<Integer>> ret = new ArrayList<>();
  4.         LinkedList<Integer> sub = new LinkedList<>();
  5.         boolean[] visit = new boolean[nums.length];
  6.         dfsPermute(nums, 0, visit, sub, ret);
  7.         return ret;
  8.     }

  9.     public void dfsPermute(int[] nums, int level, boolean[] visit, LinkedList<Integer> sub, List<List<Integer>> ret) {
  10.         if (level == nums.length) {                          
  11.           //  正确姿势
  12.          // ret.add(new ArrayList<>(sub));
  13.           // 错误姿势
  14.             ret.add(sub);
  15.             return;
  16.         }
  17.         for (int i = 0; i < nums.length; i++) {
  18.             if (visit[i]) continue;
  19.             visit[i] = true;
  20.             sub.addLast(nums[i]);
  21.             dfsPermute(nums, level + 1, visit, sub, ret);
  22.             sub.pollLast();
  23.             visit[i] = false;
  24.         }
  25.     }
复制代码

我进行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/
输出结果如下

Snip20190728_2.png (110.93 KB, 下载次数: 0)

Snip20190728_2.png

上一篇:关于recursion和DP的一点儿小心得
下一篇:Hackerrank: Lisa's Workbook
🔗
 楼主| yanjinbin 2019-7-28 23:42:54 | 只看该作者
全局:
知道原因了 不管是arraylist linkedlist list里面存放的是一个引用对象  add的时候 并没有copy
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表