力扣题解( 最长定差子序列)

1218. 最长定差子序列

给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。

子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。

思路:

本题的思路很简单,规定dpi是包含i位置元素的最长定差子序列,此时只需要确认在(0-i-1)位置中是否存在一个下标j,是的i位置元素减j位置元素仍时diffenence,则此时dpi=dpj+1.本题的优化是利用哈希表,存放已经求出最长定差子序列的元素和对应的下标,这样可以在O(1)时间内查找(0-i-1)中是否存在值为arri-difference的元素。

复制代码
class Solution {
public:
    int longestSubsequence(vector<int>& arr, int difference) {
     
     int n=arr.size();
     vector<int>dp(n,1);
     unordered_map<int,int>hash;
     hash[arr[0]]=0;
     for(int i=1;i<n;i++)
     {
        if(hash.count(arr[i]-difference))
        {
            dp[i]=dp[hash[arr[i]-difference]]+1;
        }
        hash[arr[i]]=i;
     }
     
     int ret=0;
     for(auto e:dp)
     {
        ret=max(ret,e);
     }

     return ret;

    }
};
相关推荐
Doubbbbbbble云12 小时前
多维空间索引结构R树与KD树性能对比研究4
算法
海上小飞龙13 小时前
【KMP算法-中篇】next 数组的递推:往前填一位,靠的是往回退几步
算法
lusklusklusk13 小时前
Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查
数据结构·windows·python
keyipatience13 小时前
B树详解:从零构建平衡多路搜索树
数据结构·b树·算法·图搜索
FluxArt13 小时前
GPT Image 2.5 多图参考怎么用:Flux Art 生成与编辑教程
数据结构·gpt·算法
All for pursuit.14 小时前
【分治-2】215.数组中的第K个最大元素
数据结构·c++·算法·leetcode
CQU_JIAKE14 小时前
9.15【A】
算法·动态规划
成为深度学习高手14 小时前
DAG:沿时间与通道双相关建模的外生变量时序预测
网络·人工智能·深度学习·算法·机器学习·数据挖掘·时序数据库
阳明山水14 小时前
CEDAR双重解耦实现决策与干预分离
人工智能·深度学习·算法·机器学习·架构
w_zero_one14 小时前
链表(3)
java·数据结构·算法