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

为何我的代码无法求解最长等差子序列的长度?

最长等差子序列长度求解代码问题

这是LeetCode上的「最长等差子序列长度」问题,我的实现代码如下:

def longestArithSeqLength(self, nums: List[int]) -> int:
    if len(nums)==1:
        return 1
    dp = []
    for i in nums:
        dp.append(dict())
    max_so_far = 1
    for i in range(1,len(nums)):
        for j in range(i-1,-1,-1):
            difference = nums[i] - nums[j]
            if difference in dp[j]:
                dp[i][difference] = dp[j][difference]+1
                max_so_far = max(max_so_far,dp[i][difference]+1)        
            else:
                dp[i][difference] = 1
                max_so_far = max(max_so_far,dp[i][difference]+1)
    return max_so_far

我的思路是:在每个索引位置用字典存储当前元素与前序元素的差值对应的子序列长度减1。但针对以下测试用例,代码运行失败:

[22,8,57,41,36,46,42,28,42,14,9,43,27,51,0,0,38,50,31,60,29,31,20,23,37,53,27,1,47,42,28,31,10,35,39,12,15,6,35,31,45,21,30,19,5,5,4,18,38,51,10,7,20,38,28,53,15,55,60,56,43,48,34,53,54,55,14,9,56,52]

我无法定位逻辑错误,恳请指出问题所在及该测试用例无法通过的原因。


内容的提问来源于stack exchange,提问作者Rishabh Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:17:25