Time: 20191006
Type: Medium

题目描述

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

示例 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]。

提示:

1<=arr.length<=1051 <= arr.length <= 10^51<=arr.length<=105
−104<=arr[i],difference<=104-10^4 <= arr[i], difference <= 10^4−104<=arr[i],difference<=104

思路

这道题可以用动态规划的方法来解,首先题目要求的是最长,需要往动态规划类问题上找答案。

动态规划要求我们定义状态,常规的定义f[i]表示以arr[i]元素结尾的等差数列的最大长度。

等差数列的性质决定了,我们在计算f[i]时,需要考虑的上一个元素是f[i-d],如果f[i-d]存在,则f[i] = f[i - d] + 1,否则f[i] = 1

即转移方程为:

f[i] = f[i-d] + 1 if f[i-d]存在,否则f[i] = 1

代码

下面这个是Python版本的代码,只需要简单的几行代码即可:

def longestSubsequence(self, arr: List[int], diff: int) -> int:res = {}for num in arr:res[num] = res[num - diff] + 1 if (num - diff) in res else 1return max(res.values())

2019.10 Update:

第一届PAT算法直播课培训班招募帖,欢迎点击查看详情、

END.

Leetcode 1218.最长定差子序列相关推荐

  1. LeetCode 1218. 最长定差子序列(哈希map)

    1. 题目 给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度. 示例 ...

  2. leetcode - 1218. 最长定差子序列 (使用哈希表)

    给你一个整数数组 arrarrarr 和一个整数 differencedifferencedifference,请你找出 arrarrarr 中所有相邻元素之间的差等于给定 differencedif ...

  3. LeetCode 1218 最长定差子序列

    给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度. class Sol ...

  4. Leetcode 1218. 最长定差子序列(DAY 47) ---- 动态规划学习期(昨天又没有看书捏 懒狗biss)

    原题题目 代码实现(首刷自解超时

  5. Leecode 1218. 最长定差子序列——Leecode每日一题系列

    今天是坚持每日一题打卡的第十天 题目链接:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-differ ...

  6. 1218. 最长定差子序列

    文章目录 1 题目理解 2 开始思考 1 题目理解 给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 diff ...

  7. leetcode算法题--最长定差子序列

    原题链接:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-difference/ 相关题目:最长等差数 ...

  8. Leetcode 32 最长合法括号子序列

    算法特辑–动态规划 Leetcode 32 最长合法括号子序列 给定只有"(" 和 ")" 的字符串,求出最长的合法括号子序列. 例如:"())&qu ...

  9. LeetCode 516. 最长回文子序列(动态规划)

    1. 题目 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "b ...

最新文章

  1. Unity 跑酷Demo难题总结
  2. HTML文本框中只能输入纯数字
  3. 如何下载咸鱼app里面的视频
  4. Golang 常见设计模式之选项模式
  5. jQuery 3.0 的 setter/getter 模式
  6. python+[:]+切片_我从C ++到Python的方式:概念上的改变
  7. Oracle高可用概述(HA与RAC的关系解惑)
  8. 系统运维tips 3 之 innodb
  9. 水文勘测工比赛计算机基本应用,第四届全国水文勘测工大赛内业操作试题A卷.doc...
  10. php中三元运算符用法
  11. oracle共享内存系统全局,Oracle10g 管理系统全局区简介
  12. 《剑指Offer》面试题5-替换空格
  13. 设计模式-头脑风暴-速记
  14. NAT with same subnetwork
  15. 计算机系统在线帮助,FoxPro应用系统中在线帮助及出错处理方法
  16. 2022身份识别技术大会 | 安全证件 | 可信身份认证 | 生物识别 | 公共安全安防身份技术展览会
  17. easyui的filebox组件实现多文件上传
  18. 合唱队形java_合唱队形
  19. 傲梅轻松备份linux,傲梅轻松备份官方下载_傲梅轻松备份最新版_傲梅轻松备份5.7免费版-华军软件园...
  20. Deep Speech笔记

热门文章

  1. Generalised Dice Overlap as a Deep Learning Loss Function for Highly Unbalanced Segmentations
  2. jquery 时间相减获取天数_JQuery Datepicker实现JavaScript日期相减的小例子
  3. linux 输入8个字母进行排序,Linux排序命令sort详解
  4. xp怎么删除计算机用户,WinXp系统如何删除用户账户?Xp系统删除用户账号的方法...
  5. select case语句_图解Go select语句原理
  6. java线程间通信 实例_JAVA-初步认识-第十四章-线程间通信-示例
  7. 可变分区存储管理实验报告总结_可变分区存储管理方式的内存分配和回收实验报告...
  8. php怎么防止爬虫,PHP语言学习之php 防止爬虫设置
  9. 如何在Linux中使用ulimit命令
  10. component_春天@Component