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

[Leetcode] what is wrong with my clone graph code

全局:

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

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

x
本帖最后由 snail8844 于 2019-7-20 05:41 编辑

无法正确clone graph. 错在哪里呢?返回的结果只会克隆一部分图,无法克隆全部。

  1. class Solution:
  2.     def cloneGraph(self, node: 'Node') -> 'Node':
  3.         def dfs(node):
  4.             if node in seen:
  5.                 return
  6.             seen[node] = Node(node.val, [])
  7.             for nxt in node.neighbors:
  8.                 seen[node].neighbors.append(Node(nxt.val, []))
  9.                 dfs(nxt)
  10.         seen = {}
  11.         dfs(node)
  12.         return seen[node]
复制代码


上一篇:Array 在python 里面是干啥的
下一篇:面试题讨论-TRIE
推荐
magicsets 2019-7-20 11:19:19 | 只看该作者
全局:
"seen"要记录从原图节点到克隆节点的映射,你的第二份代码改成这样就可以了:

  1. class Solution:
  2.     def cloneGraph(self, node: 'Node') -> 'Node':
  3.         def dfs(node):
  4.             if node in seen:
  5.                 return seen[node]
  6.             res = Node(node.val, [])
  7.             seen[node] = res
  8.             for nxt in node.neighbors:
  9.                 res.neighbors.append(dfs(nxt))
  10.             return res
  11.         seen = {}
  12.         return dfs(node) if node else None
复制代码
回复

使用道具 举报

🔗
 楼主| snail8844 2019-7-20 10:12:28 | 只看该作者
全局:
又写一个递归版本的,还是报错 “AttributeError: 'NoneType' object has no attribute 'neighbors'

  1. class Solution:
  2.     def cloneGraph(self, node: 'Node') -> 'Node':
  3.         def dfs(node):
  4.             if not node or node in seen:
  5.                 return
  6.             seen.add(node)
  7.             res = Node(node.val, [])
  8.             for nxt in node.neighbors:
  9.                 res.neighbors.append(dfs(nxt))
  10.             return res
  11.         seen = set()
  12.         return dfs(node)
复制代码


回复

使用道具 举报

🔗
 楼主| snail8844 2019-7-20 11:41:43 来自APP | 只看该作者
全局:
magicsets 发表于 2019/07/20 11:19:19
"seen"要记录从原图节点到克隆节点的映射,你的第二份代码改成这样就可以了:

[mw_shl_code=python,true]class Solution:
    def cloneGr...

哈哈,厉害!多谢多谢!🙏
回复

使用道具 举报

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

本版积分规则

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