问题描述

给你一个整数数组 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]。

代码

class Solution {
public:
int longestSubsequence(vector<int>& arr, int difference) {
int n = arr.size(),ans = 1;
if(n == 0)return 0;
unordered_map<int,int> table;
vector<int>dp(n,1);
table[arr[0]] = 0;
for(int i = 1; i < n; ++i)
{
int num = arr[i] - difference;
if(table.count(num))//说明之前有可以连成等差数列的值
{
int ind = table[num];//找到该数值的坐标
dp[i] = dp[ind] + 1;
ans = max(dp[i],ans);
}
table[arr[i]] = i;
}
return ans;
}
};

结果:

执行用时:304 ms, 在所有 C++ 提交中击败了76.78%的用户
内存消耗:53.3 MB, 在所有 C++ 提交中击败了47.48%的用户

最新文章

  1. 团体程序设计天梯赛-练习集L1-008. 求整数段和
  2. Office在线预览及PDF在线预览的实现方式史上最全大集合
  3. winfrom 截屏、抓屏 分类: WinForm 2014-08-01 13:02 198人阅读 评论(0) 收藏
  4. Python新手学习基础之数据结构-序列2
  5. Chapter 7 代理模式
  6. UVALive 6931 Can&#39;t stop playing (Regionals 2014 &gt;&gt; Europe - Central)
  7. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6
  8. (转)IDEA破解 2017 IDEA license server 激活(可用)
  9. iOS7控制中心会覆盖由下向上的手势
  10. eclipse 设置
  11. 微信小程序总结
  12. show full processlist
  13. .Net 中读写Oracle数据库常用两种方式
  14. Sql保留两位小数方法
  15. Jupyter Notebook 入门
  16. Spring注解详解@Repository、@Component、@Service 和 @Constroller
  17. std::bind技术内幕
  18. Pandas 练习题
  19. 我的OI生涯 第五章
  20. node的模块管理

热门文章

  1. 工期设定(Project)
  2. k8s-statefulset
  3. 开启ipv6支持
  4. SpringBoot整合Netty实现socket通讯简单demo
  5. js判断是电脑(pc)访问还是手机(mobile)访问
  6. typora 基本使用和漂亮的主题样式
  7. 第一篇CSDN博客,大家好!
  8. 【LeetCode】1171. Remove Zero Sum Consecutive Nodes from Linked List 解题报告 (C++)
  9. 【九度OJ】题目1054:字符串内排序 解题报告
  10. 【LeetCode】790. Domino and Tromino Tiling 解题报告(Python)