为何我的代码无法求解最长等差子序列的长度?
最长等差子序列长度求解代码问题
这是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
相关产品推荐
相关产品推荐

