报错解决:力扣提交后的执行结果与执行代码的结果不一致(解答错误)

问题描述

在做力扣第17道题目(电话号码的字母组合)时,写了一个递归函数,在编译器本地、在力扣设置测试用例后执行代码的结果都没有问题,但提交后答案出错。

在本地的运行结果与提交后的运行结果不一致。

这是设置测试用例后执行代码的结果:
在这里插入图片描述
这是提交之后的结果:

在这里插入图片描述
注意到,一模一样的测试用例,结果居然不一样!并且刚好是第二个测试用例出错。

原始代码如下:

class Solution:table = [[], [], ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l'], ['m', 'n', 'o'],['p', 'q', 'r', 's'], ['t', 'u', 'v'], ['w', 'x', 'y', 'z']]rs = []def dfs(self, digits, pos, curr_str=''):if pos >= len(digits):self.rs.append(curr_str)returnfor ch in self.table[int(digits[pos])]:self.dfs(digits, pos+1, curr_str + ch)def letterCombinations(self, digits):if len(digits) == 0:return []self.dfs(digits, 0)return self.rs

原因分析与解决方案

最终我找到了原因所在,在其记录,希望对后来的同学能有启发。

我的错误的原因在于:

我将rs定义成为了类的成员变量,在每次调用letterCombinations方法获取返回结果时并没有将rs初始化,所以rs会不断append。

由此可以分析出力扣评测的方式:对于所有的测试用例,只创建一个Solution实例,多次调用该实例的方法,每次传入不同的参数(测试用例)。

总结

如果将返回结果定义成了类的成员变量,在类获取结果的方法中必须将其初始化!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部