一亩三分地

 找回密码 注册账号

扫描二维码登录本站

微信公众号
扫码关注公众号
留学申请号
扫码关注留学申请公众号
查看: 288|回复: 6
收起左侧

[Leetcode] [Index error] 78. Subsets 求帮忙看一下问题出在了哪里

[复制链接] |只看干货 |leetcode, 刷题
我的人缘0

升级   30%


分享帖子到朋友圈
matalin | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   96% (24)
 
 
4% (1)    👎
5小米
本帖最后由 matalin 于 2020-12-1 03:42 编辑

题目在这里:https://leetcode.com/problems/subsets/
提前感谢地里好心人的帮助!



代码:

[Python] 纯文本查看 复制代码
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        def dfs(index, path, res):
            # base
            if index == len(nums):
                res.append(path)
            
            # include
            dfs(index + 1, path + [nums[index]], res)
            
            # not include
            dfs(index + 1, path, res)      
            
        res = []
        dfs(0, [], res)
        return res

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

最佳答案

查看完整内容

没写过python,不过base case 那里是不是没return?

评分

参与人数 1大米 +1 收起 理由
14417335 + 1

查看全部评分


上一篇:有想通过Bootcamp学习software engineering的吗?
下一篇:找基督徒弟兄一起刷题,谢谢!
我的人缘0

升级   16.08%

Vigoose1 2020-12-1 03:18:57 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   98% (65)
 
 
1% (1)    👎
没写过python,不过base case 那里是不是没return?
回复

使用道具 举报

我的人缘0

升级   0%

alexxela 2020-12-1 03:52:13 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   0% (0)
 
 
0% (0)    👎
there's no return in your base condition.
回复

使用道具 举报

我的人缘0

升级   30%

 楼主| matalin 2020-12-1 08:44:33 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   96% (24)
 
 
4% (1)    👎
Vigoose1 发表于 2020-12-1 03:18
没写过python,不过base case 那里是不是没return?

谢谢!请问下一般recursion的base什么情况需要return,什么情况不需要return呢?
回复

使用道具 举报

我的人缘0

升级   16.08%

Vigoose1 2020-12-1 09:14:38 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   98% (65)
 
 
1% (1)    👎
General的来说 base case需要return是因为你需要设置recursion的终止条件,不能无限制的往下递归,就这道题来说因为你base case该return的时候没有return,那个index已经到达数组的最后一个,继续往下走就导致了下标越界。 dfs(index + 1, path + [nums[index]], res)
回复

使用道具 举报

我的人缘0

升级   30%

 楼主| matalin 2020-12-1 13:35:42 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   96% (24)
 
 
4% (1)    👎
Vigoose1 发表于 2020-12-1 09:14
General的来说 base case需要return是因为你需要设置recursion的终止条件,不能无限制的往下递归,就这道题 ...

原来如此~~为什么有的recursion解法好像没有return也可以跑呢,比如下面这个,results append了之后就自动结束了:
[Python] 纯文本查看 复制代码
# 131. Palindrome Partitioning [url]https://leetcode.com/problems/palindrome-partitioning/[/url]
class Solution:
    def partition(self, s: str) -> List[List[str]]:
        def check_prefix(remaining, res, results):
            # base
            if not remaining:
                results.append(res)

            # recursion
            for i in range(1, len(remaining)+1):
                word = remaining[:i]
                reverse_word = word[::-1]
                if word == reverse_word:
                    check_prefix(remaining[i:], res + [word], results)
        results = []
        check_prefix(s, [], results)
        return results

回复

使用道具 举报

我的人缘0

升级   16.08%

Vigoose1 2020-12-2 03:25:09 | 显示全部楼层
本楼:   0% (0)
 
 
0% (0)  
全局: 👍   98% (65)
 
 
1% (1)    👎
matalin 发表于 2020-12-1 13:35
原来如此~~为什么有的recursion解法好像没有return也可以跑呢,比如下面这个,results append了之后就自 ...

抱歉不是特别懂python的语法,但是大致看了一下这里好像是没有越界可能的,即使base case过去了以后如果remaining是none的话不会进入for循环所以不会有溢出。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|||一亩三分地

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

Some icons made by Freepik from flaticon.com

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