You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:09:03