📣 独立日限时特惠: VIP通行证立减$68
12
返回列表 发新帖
楼主: 匿名
跳转到指定楼层
上一主题 下一主题
收起左侧

刀大匙 新鲜电面

地里匿名用户
🔗
匿名用户-ZOBGL  2021-9-15 14:01:16
jliu 发表于 2021-9-14 20:13
空间占用太大,面试官估计会不满意

能不能展开说一下为什么递归要比bfs更节约空间?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-G9VCS  2021-9-21 12:55:44
你有没有想过,你一用backtracking就是np?
回复

使用道具 举报

🔗
krystalHappy 2021-9-30 04:31:48 | 只看该作者
全局:
好奇楼主 为什么结果有 1 → 5,1 → 2 → 3 → 5, and 1 → 3 → 5
就第一个来说from -> to 里面没有从1直接到5的,难道这个是无向图吗?还是楼主不小心写错了呀
回复

使用道具 举报

🔗
zlsc005 2021-10-11 07:31:11 | 只看该作者
全局:
楼主大佬,这道题有follow up吗?已加米!
回复

使用道具 举报

🔗
niubuzhi 2021-10-28 07:26:53 | 只看该作者
全局:
Super simple solution using python (please add rice if you like it!!!)
  1. def min_path(self, start, end, edges, n):
  2.         
  3.         from collections import defaultdict
  4.         
  5.         edge_map = defaultdict(list)
  6.         
  7.         for edge in edges:
  8.             parent, child, weight = edge
  9.             edge_map[parent].append((child, weight))
  10.             
  11.         visited = [0] * n
  12.             
  13.         def recur(node):
  14.             if node == end:
  15.                 return 0
  16.             if node not in edge_map:
  17.                 return -1
  18.             childs = edge_map[node]
  19.             
  20.             layer = []
  21.             for child, weight in childs:
  22.                 if visited[child-1]:
  23.                     continue
  24.                 visited[child-1] = 1
  25.                 tmp = recur(child)
  26.                 if tmp >= 0:
  27.                     layer.append(tmp + weight)
  28.             
  29.             if not layer:
  30.                 return -1
  31.             else:
  32.                 return min(layer)
  33.             
  34.         return recur(start)
复制代码

评分

参与人数 1大米 +1 收起 理由
狗狗舔狗 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

地里匿名用户
🔗
匿名用户-RGYDU  2021-11-9 05:57:15
niubuzhi 发表于 2021-10-27 18:26
Super simple solution using python (please add rice if you like it!!!)

请问为啥是visited[child-1]哇
回复

使用道具 举报

🔗
kevinkozj 2021-11-16 07:29:29 | 只看该作者
全局:
太赞了 必须给2米!
回复

使用道具 举报

🔗
niubuzhi 2021-11-22 11:46:16 | 只看该作者
全局:
niubuzhi 发表于 2021-10-28 07:26
Super simple solution using python (please add rice if you like it!!!)

The previous version has some minor bug. I modified the code as follows:
  1. def min_path(self, start, end, edges, n):
  2.         
  3.         from collections import defaultdict
  4.         
  5.         edge_map = defaultdict(list)
  6.         
  7.         for edge in edges:
  8.             parent, child, weight = edge
  9.             edge_map[parent].append((child, weight))
  10.             
  11.         values = [0] * (n+1)
  12.             
  13.         def recur(node):
  14.             if node == end:
  15.                 values[node] = 0
  16.             if node not in edge_map:
  17.                 values[node] = -1
  18.             if values[node]:
  19.                 return values[node]

  20.             layer = []
  21.             for child, weight in edge_map[node]:
  22.                 tmp = recur(child)
  23.                 if tmp >= 0:
  24.                     layer.append(tmp + weight)
  25.             
  26.             if not layer:
  27.                 values[node] = -1
  28.             else:
  29.                 values[node] = min(layer)

  30.             return values[node]
  31.             
  32.         return recur(start)
复制代码
回复

使用道具 举报

全局:
感谢楼主分享
回复

使用道具 举报

🔗
owenwilder 2022-3-19 13:27:10 | 只看该作者
全局:
在priorityqueue里直接也把路径存下不可以吗?一定要再dfs?
回复

使用道具 举报

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

本版积分规则

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