【leetcode每日一题】1027. 最长等差数列

简介: 【leetcode每日一题】1027. 最长等差数列

刚开始一时半会没想出来,不过看了题解才恍然大悟,感觉对二维的动态规划还是挺不熟悉的,还得加强练习

题解如下

class Solution {
public:
    int longestArithSeqLength(vector<int>& nums) {
        int n = nums.size();
        int f[n][1001];
        memset(f,0,sizeof(f));
        int ans = 0;
        for(int i = 1;i < n; i++){
            for(int k = 0;k < i; k++){
                int j = nums[i] - nums[k] + 500;
                f[i][j] = max(f[i][j],f[k][j]+1);
                ans = max(ans,f[i][j]);
            }
        }
        return ans + 1;
    }
};

规划递推式为

f[i][j] = max(f[i][j],f[k][j]+1);

j为公差,每个对应的元素都有相应从0到自身值的公差数组,dp本质是空间换时间,本题思想就是求出每个元素对应的公差数组的最长值,然后再递推ans,再输出就好了。

相关文章
【LeetCode-每日一题】-718. 最长重复子数组
【LeetCode-每日一题】-718. 最长重复子数组
|
2天前
leetcode-343:整数拆分
leetcode-343:整数拆分
19 0
|
6月前
|
算法
代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
40 0
|
6月前
|
JavaScript 前端开发 C语言
leetcode每日一题 2021/4/3 1143. 最长公共子序列
leetcode每日一题 2021/4/3 1143. 最长公共子序列
38 0
|
6月前
leetcode每日一题 2021/4/10 263. 丑数
leetcode每日一题 2021/4/10 263. 丑数
30 0
|
9月前
|
存储 算法 测试技术
【AcWing每日一题】4653. 数位排序
【AcWing每日一题】4653. 数位排序
90 0
|
10月前
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
57 0
|
存储 安全 测试技术
蓝桥<排水管道>题的题解(最长上升子序列的变式)
蓝桥杯排水管道AC题解,帮助你加深理解LIS最长上升子序列
蓝桥<排水管道>题的题解(最长上升子序列的变式)