Skip to content

1027. 最长等差数列 ​

  • 题号:1027
  • 来源:LeetCode
  • 难度:中等
  • 标签:dp 数组
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n^2) 时间 · O(n*1001) 空间 · 更新于 2026-09-27

dp[i][d] 记录以 i 结尾公差 d 的最长长度

typescript
/**
 * @difficulty medium
 * @tags dp,数组
 * @time O(n^2)
 * @space O(n*1001)
 * @note dp[i][d] 记录以 i 结尾公差 d 的最长长度
 * @1027. 最长等差数列
 */

/**
 * @最长等差数列
 * 中等
 * @note难题
 */

let nums: number[] = [9, 4, 7, 2, 10]
// dp[i][d]表示以nums[i]结尾且公差为d的数列长度。
let n: number = nums.length
let dp: number[][] = new Array(n).fill(1).map(() => new Array(1001).fill(1))
let res: number = 1
for (let i = 1; i < n; i++) {
    for (let j = 0; j < i; j++) {
        let d: number = nums[i] - nums[j] + 500
        dp[i][d] = dp[j][d] + 1
        res = Math.max(res, dp[i][d])
    }
}
export {};

源码:ts/leetcode/1027. 最长等差数列.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm