Python Leet 代码问题的解决方案在提交时失败但适用于自定义输入?
Python Solution to Leet Code Problem is Failing when Submitted but works on custom input?
每次我尝试提交时,我的解决方案都在一个测试用例中失败,但是当我提供与自定义输入相同的输入时,它会按预期工作。
有人可以帮我解决这个问题吗?
请查看此屏幕截图。
Screenshot
这是 LeetCode 的第 121 题。
代码:
class Solution:
dp = []
maxSP = 0
def calcProf(self, prices, i, n):
#dp[n-1] = 0 is the base case.
if i < 0:
return
dp = Solution.dp
Solution.maxSP = max(Solution.maxSP, prices[i+1])
prof = Solution.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
Solution.dp = [0] * (n)
self.calcProf(prices, n-2, n)
print("MaxSP: ", Solution.maxSP)
print("dp: ", Solution.dp)
return Solution.dp[0]
您正在使用静态属性,您应该确保在 maxProfit
的每个 运行 上重置这些属性。
事情出错是因为您没有将 Solution.maxSP
重置为零,因此 max(Solution.maxSP, prices[i+1])
使用的值是 [=10= 的前一个 运行 的结果]
因此请务必将 Solution.maxSP
重置为零。
每次我尝试提交时,我的解决方案都在一个测试用例中失败,但是当我提供与自定义输入相同的输入时,它会按预期工作。
有人可以帮我解决这个问题吗?
请查看此屏幕截图。 Screenshot 这是 LeetCode 的第 121 题。
代码:
class Solution:
dp = []
maxSP = 0
def calcProf(self, prices, i, n):
#dp[n-1] = 0 is the base case.
if i < 0:
return
dp = Solution.dp
Solution.maxSP = max(Solution.maxSP, prices[i+1])
prof = Solution.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
Solution.dp = [0] * (n)
self.calcProf(prices, n-2, n)
print("MaxSP: ", Solution.maxSP)
print("dp: ", Solution.dp)
return Solution.dp[0]
您正在使用静态属性,您应该确保在 maxProfit
的每个 运行 上重置这些属性。
事情出错是因为您没有将 Solution.maxSP
重置为零,因此 max(Solution.maxSP, prices[i+1])
使用的值是 [=10= 的前一个 运行 的结果]
因此请务必将 Solution.maxSP
重置为零。