尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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;}};
RELATED

相关推荐

金融风控场景下Qwen-7B大模型微调实战指南

金融风控场景下Qwen-7B大模型微调实战指南

1. 项目背景与核心价值去年开源大模型爆发式增长,但直接使用基础模型往往难以满足特定业务需求。我在金融风控场景中尝试直接调用Qwen-7B时发现,虽然通用能力不错,但在行业术语理解和风险规则判断上准确率只有63%。这促使我深入研究大模型微调…

📅 2026/8/16 10:57:27
视频本地化混合翻译方案:AI与人工的黄金比例

视频本地化混合翻译方案:AI与人工的黄金比例

1. 视频本地化行业的翻译需求现状视频内容全球化传播已成为企业拓展市场的标配需求。根据行业调研数据,85%的跨国企业需要将核心视频内容本地化为至少5种语言。传统纯人工翻译模式面临三大痛点:成本高(专业译员每分钟视频收费约15-30美元&…

📅 2026/9/11 8:15:34
如何为Nodejs后端服务配置Taotoken统一大模型调用接口

如何为Nodejs后端服务配置Taotoken统一大模型调用接口

如何为Nodejs后端服务配置Taotoken统一大模型调用接口 对于Node.js开发者而言,将大模型能力集成到后端服务中已成为常见需求。直接对接不同厂商的原生API往往意味着需要管理多个密钥、处理不同的调用格式,并在代码中维护复杂的切换逻辑。Taotoken平台提…

📅 2026/8/6 13:49:31
MORE NEWS

更多资讯

📰

libpqxx 7.7.3 configure 脚本构建指南:从编译、测试到安装的完整实战(ZeroTierOne 仓库内置源码)

libpqxx 7.7.3 configure 脚本构建指南:从编译、测试到安装的完整实战(ZeroTierOne 仓库内置源码) 【免费下载链接】ZeroTierOne A Smart Ethernet Switch for Earth 项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne l…

📰

Wagtail 无障碍实践全指南:从内容建模到自定义 Axe 内容检查器

Wagtail 无障碍实践全指南:从内容建模到自定义 Axe 内容检查器 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wagtail CMS 驱动的网站其无障…

📰

Java小白看过来!掌握Spring AI,抢占AI求职入场券

随着AI技术的发展,Java招聘市场对AI技能的需求日益增长。本文介绍了Spring AI如何帮助Java工程师快速掌握AI技能,实现AI化转型。文章指出,Spring AI是Java生态直接长出的AI能力,无需换语言、框架或学习Python,适合Java…

📰

wgpu 在 Android 与 iOS 上运行测试:交叉编译配置与 adb/ssh 设备端执行完整指南

wgpu 在 Android 与 iOS 上运行测试:交叉编译配置与 adb/ssh 设备端执行完整指南 【免费下载链接】wgpu A cross-platform, safe, pure-Rust graphics API. 项目地址: https://gitcode.com/GitHub_Trending/wg/wgpu wgpu 作为跨平台 Rust 图形 API&#xff0…

📰

独立站数据漏报是怎么发生的?五个常见断点

摘要:独立站的数据为什么总对不上?不是统计口径的问题,而是数据在"采集→上报→归因→入仓"链路里被静默丢弃。本文给出五个最常见断点的排查方法,帮跨境电商团队找回"消失的转化"。独立站运营经常遇到这样的…

📰

marimo 函数复用机制详解:用 setup cell 与 @app.function 将笔记本中的函数与类导出为可导入模块

marimo 函数复用机制详解:用 setup cell 与 app.function 将笔记本中的函数与类导出为可导入模块 【免费下载链接】marimo A reactive notebook for Python — run reproducible experiments, query with SQL, execute as a script, deploy as an app, and version …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬