LeetCode第121题Python解法提交失败但自定义输入运行正常怎么办
问题根因
- 你代码中定义的
dp、maxSP是类级别的共享变量,LeetCode运行多测试用例时会复用Solution类的上下文,上一个测试用例运行结束后maxSP的残留值不会被重置,带入下一个测试用例就会得到错误结果。单独运行单个报错用例时没有历史残留值,所以结果符合预期。
修正方案
把类变量改为实例变量,每次调用maxProfit时重新初始化这两个值即可,修改后可正常通过所有用例的代码如下:
from typing import List class Solution: def calcProf(self, prices, i, n): # dp[n-1] = 0 为边界条件 if i < 0: return dp = self.dp self.maxSP = max(self.maxSP, prices[i+1]) prof = self.maxSP - prices[i] dp[i] = max(prof, dp[i+1]) self.calcProf(prices, i-1, n) def maxProfit(self, prices: List[int]) -> int: n = len(prices) if n == 1: return 0 # 每次运行初始化实例变量,不同测试用例之间互不干扰 self.dp = [0] * n self.maxSP = 0 self.calcProf(prices, n-2, n) return self.dp[0]
内容的提问来源于stack exchange,提问作者Star
相关产品推荐
相关产品推荐

