LC.P1027[最长等差数列]
方法一:动态规划
定义$f[i][j]$表示以$nums[i]$结尾且公差为$j$的等差数列的最大长度。初始时$f[i][j] = 1$,表示每个元素自身都是一个长度为$1$的等差数列。
由于公差可能为负数,且最大差值为 500 ,因此,可以将统一将公差加上 500,这样公差的范围就变成了 $[0 , 1000]$
如果初始时 $f[i][j] = 0$,那么我们需要在最后返回答案时加上 $1$。
1 | class Solution { |
- 时间复杂度:$O(n \times (n + d))$,$n$为$nums$的长度,$d = max(nums) - min(nums)$
- 空间复杂度:$O(n \times d)$
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 byu_rself!
评论