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

[Leetcode] LeetCode 787, 实在是不知道自己错在哪了,找不出逻辑错误了

全局:

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

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

x
第35个case实在是跑不过去,因为是一个极大的case,很难一个个debug了,裸改实在是看不出自己的code逻辑错在哪了,求各位大佬帮帮忙!

以下是code(python):
class Solution:
    def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:
        dic = {}
        self.res = float("Inf")
        for i in flights:                               #用dict建图
            if i[0] not in dic:
                dic[i[0]] = [(i[1],i[2])]
            else:
                dic[i[0]].append((i[1],i[2]))
        k+=1
        visited = {}
        def dfs(now,stop,price):                                  #dfs找出所有路径
            if stop<=k and now == dst:                       #如果路径存在且停留数合乎要求,则保留最小price
                self.res = min(self.res,price)
                return
            if stop>=k:                                                  #如果停留数不合要求,直接终止
                return
            visited[now] = stop                                     #用一个dict去记录走过的路径,防止重复
            if now in dic:
                for i in dic[now]:
                    if i[0] not in visited or stop < visited[i[0]]:                   #如果下一步不在dict里面,或者停留数小于原本在dic里面的这一步,则能够递归,否则不重复路径
                        if i[0] in visited:
                            visited[i[0]] = stop                                               #如果下一步在dict里面,更新停留数
                        dfs(i[0],stop+1,price+i[1])
        dfs(src,0,0)
        return self.res if self.res!=float('Inf') else -1

上一篇:决定从python转到java
下一篇:问一道狗家高频,Max Product Of Binary Tree
全局:
本帖最后由 一剑终情 于 2019-12-18 21:11 编辑

“停留数小于原本在dic里面的这一步则能够递归”不对啊
假设src=1 dst=4
1可以到3,
1也可以到2,2可以到3
3可以到4
如果price1到2 + price2到3 < price1到3,然后你的算法先算了1到3,那就不会再算1到2接2到3这条路了
回复

使用道具 举报

🔗
anhpp 2019-12-19 12:14:09 | 只看该作者
全局:
我以为这题应该用dijkstra呢?
回复

使用道具 举报

🔗
 楼主| wowowonini 2019-12-19 12:27:15 | 只看该作者
全局:
anhpp 发表于 2019-12-19 12:14
我以为这题应该用dijkstra呢?

老哥,这道题是应该用dij,只是我当时第一个想到的就是dfs哈哈
回复

使用道具 举报

🔗
 楼主| wowowonini 2019-12-19 12:27:57 | 只看该作者
全局:
一剑终情 发表于 2019-12-19 10:59
“停留数小于原本在dic里面的这一步则能够递归”不对啊
假设src=1 dst=4
1可以到3,

有道理老哥,我等会就去改改,应该在完成步骤后remove掉visit里面的path值
回复

使用道具 举报

🔗
anhpp 2019-12-19 14:07:30 | 只看该作者
全局:
wowowonini 发表于 2019-12-19 12:27
老哥,这道题是应该用dij,只是我当时第一个想到的就是dfs哈哈

哈哈哈 有最小距离 最小代价的 没办法啊
标准的单源最短路径啊 single source shortest path
回复

使用道具 举报

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

本版积分规则

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