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

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;

    }
};
相关推荐
.道阻且长.25 分钟前
C++ 11:可变参数模板
前端·c++·算法
hzxpaipai28 分钟前
企业官网后台怎么设计?从产品分类、参数到资料下载的数据结构
数据结构
Doubbbbbbble云3 小时前
基于贪心算法的区间覆盖问题求解策略4
算法·贪心算法
不会就选b9 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
Cccp.12312 小时前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
千里码aicood12 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
做cv的小昊13 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
لا معنى له13 小时前
World-In-World: World Models in a Closed-Loop World
算法
Logic10115 小时前
C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质