恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

1218. 最长定差子序列

  • 首页
  • 资讯中心
  • /
  • 1218. 最长定差子序列

相关资讯

金融风控场景下Qwen-7B大模型微调实战指南 2026/10/14 5:08:51
视频本地化混合翻译方案:AI与人工的黄金比例 2026/10/14 5:09:02
如何为Nodejs后端服务配置Taotoken统一大模型调用接口 2026/10/14 5:09:11

最新资讯

深度学习可复现性实战:锁定随机性与环境,让实验结果不再漂移
从方法到实操:Cochrane系统评价与RevMan软件快速上手指南
AI工作助手实战指南:从任务复盘到行业应用分享写法
本地大模型推理引擎llama.cpp实战:GGUF量化与性能调优指南
MATLAB新手入门指南:从科学计算到数据可视化避坑
C语言入门与二级C备考:从考试规则到上机避坑全攻略

今日推荐

Qwen3.5-122B-A10B-singprobe幻觉检测实战:AUC 0.7806,如何实时揪出大模型一本正经的胡话?
NetSpot 实战:用信道分析与频宽优化解决 Wi-Fi 卡顿
C++ split() 字符串分割的五种实现与性能实测

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

1218. 最长定差子序列

发布时间:2026/10/17 13:48:19
1218. 最长定差子序列 题目描述给你一个整数数组arrarrarr和一个整数differencedifferencedifference请你找出并返回arrarrarr中最长等差子序列的长度该子序列中相邻元素之间的差等于differencedifferencedifference。子序列 是指在不改变其余元素顺序的情况下通过删除一些元素或不删除任何元素而从arrarrarr派生出来的序列。示例 1输入arr [1,2,3,4], difference 1输出4解释最长的等差子序列是 [1,2,3,4]。示例 2输入arr [1,3,5,7], difference 1输出1解释最长的等差子序列是任意单个元素。示例 3输入arr [1,5,7,8,5,3,4,2,1], difference -2输出4解释最长的等差子序列是 [7,5,3,1]。算法原理子序列问题可用动态规划解决状态表示dp[i]dp[i]dp[i]表示以iii为结尾的所有等差子序列中最长等差子序列的长度状态转移方程由于题目给定了差值differencedifferencedifference所以在知道arr[i]aarr[i] aarr[i]a的情况下可以推出它前面的那个值等于a−differenceba - difference ba−differenceb。因此当获得值aaa时就去arrarrarr的[0,i−1][0, i-1][0,i−1]区间中找一个值bbb根据bbb的情况有两种状态[0,i−1][0, i-1][0,i−1]区间中不存在bbb此时aaa自己为一个等差子序列dp[i]1dp[i] 1dp[i]1[0,i−1][0, i-1][0,i−1]区间中存在bbb此时aaa要跟在以bbb为结尾的等差子序列之后假设0ji−10 j i-10ji−1以bbb为结尾的等差子序列它的长度为dp[j]dp[j]dp[j]以aaa为结尾的等差子序列它的长度就是dp[j]1dp[j] 1dp[j]1但是如果这样做就要去遍历[0,i−1][0, i-1][0,i−1]区间了效率太低我们进行优化由于差值固定为differencedifferencedifference当得到arr[i]aarr[i] aarr[i]a时在[0,i−1][0, i-1][0,i−1]区间内找任意一个bbb均可得到以aaa为结尾的最长等差子序列长度所以使用一个哈希表hashhashhash保存某等差子序列最后一个值和该等差子序列长度的映射关系当得到aaa时在hashhashhash中查找bbbbbb不存在就保存hash[a]1hash[a] 1hash[a]1。bbb存在就保存hash[a]hash[b]1hash[a] hash[b] 1hash[a]hash[b]1并更新结果初始化刚开始哈希表什么都没有i0i 0i0时会得到aarr[0]a arr[0]aarr[0]在哈希表中查找[0,−1][0, -1][0,−1]区间上的值bbb肯定是找不到的此时会填入arr[0]0arr[0] 0arr[0]0所以哈希表不需要初始化填表顺序从左到右遍历arrarrarr填充哈希表返回值哈希表中的最大值代码classSolution{public:intlongestSubsequence(vectorintarr,intdifference){unordered_mapint,inthash;// 某等差子序列最后一个值 - 该等差子序列的长度intans1;for(inti0;iarr.size();i){intaarr[i];intba-difference;if(hash.find(b)!hash.end())// 之前有以 b 为结尾的子序列{intlenhash[b];hash[a]len1;// 在以 b 为结尾的子序列之后带上 aansmax(ans,len1);}else// 之前没有以 b 为结尾的子序列{hash[a]1;}}returnans;}};

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号