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 重置为零。