如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

例如,以下数列为等差数列:

1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9
以下数列不是等差数列。

1, 1, 2, 5, 7

数组 A 包含 N 个数,且索引从 0 开始。该数组子序列将划分为整数序列 (P0, P1, …, Pk),P 与 Q 是整数且满足 0 ≤ P0 < P1 < … < Pk < N。

如果序列 A[P0],A[P1],…,A[Pk-1],A[Pk] 是等差的,那么数组 A 的子序列 (P0,P1,…,PK) 称为等差序列。值得注意的是,这意味着 k ≥ 2。

函数要返回数组 A 中所有等差子序列的个数。

输入包含 N 个整数。每个整数都在 -231 和 231-1 之间,另外 0 ≤ N ≤ 1000。保证输出小于 231-1。

示例:

输入:[2, 4, 6, 8, 10]

输出:7

解释:
所有的等差子序列为:
[2,4,6]
[4,6,8]
[6,8,10]
[2,4,6,8]
[4,6,8,10]
[2,4,6,8,10]
[2,6,10]
1e3的数据量,很容易想到两重循环去实现动态规划。
dp[i][j]代表的是以i结尾的差值为j的等差数组的长度。
例如:[1, 1, 2, 3, 4, 5]

代码如下:

#define LL long long
class Solution {public:int numberOfArithmeticSlices(vector<int>& A) {int n = A.size();LL ans = 0;vector<map<LL,int>> p(n);for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {LL delta = (LL)A[i] - (LL)A[j];int sum = 0;if (p[j].find(delta) != p[j].end()) {sum = p[j][delta];}p[i][delta] += sum + 1;ans += sum;}}return (int)ans;}
};

dp是永远的痛。
努力加油a啊,(o)/~

等差数列划分 II - 子序列(动态规划)相关推荐

  1. leetcode 446. Arithmetic Slices II - Subsequence | 446. 等差数列划分 II - 子序列(动态规划)

    题目 https://leetcode.com/problems/arithmetic-slices-ii-subsequence/ 题解 找等差子数列,详见注释. 一个月前做过,没通过,今天 dai ...

  2. 等差数列划分 II - 子序列

    https://leetcode-cn.com/problems/arithmetic-slices-ii-subsequence/solution/deng-chai-shu-lie-hua-fen ...

  3. 【数据结构与算法】之深入解析“等差数列划分II”的求解思路与算法示例

    一.题目要求 给你一个整数数组 nums ,返回 nums 中所有等差子序列的数目. 如果一个序列中至少有三个元素 ,并且任意两个相邻元素之差相同,则称该序列为等差序列. 例如,[1, 3, 5, 7 ...

  4. 看似动态规划,实则不需要——等差数列划分

    原题:等差数列划分 老规矩,先看看能否用递归解. 转换 假设现在的数列为[1,2,3,4,5,6],要怎么才能找出其子数列中所有的等差数列而无遗漏呢? 很容易想到,我们可以找出其所有子数列中以某数开头 ...

  5. leetcode - 413. 等差数列划分

    413. 等差数列划分 -------------------------------------------- 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如 ...

  6. 等差数列java_Java实现 LeetCode 413 等差数列划分

    413. 等差数列划分 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, - ...

  7. 北京大学郭炜-最长上升子序列 动态规划讲解

    北京大学郭炜-最长上升子序列 动态规划讲解 问题原型: 解题思路: 找子问题,题目要求我们求1~n的最长上升子序列的长度,那我们想一想:1-2个元素的最长上升子序列的长度是多少,第1个元素的最长上升子 ...

  8. Leetcode-D26-动态规划(二刷)-413. 等差数列划分91. 解码方法

    昨天电脑在跑东西,卡的不行,用ipad写的题,没在csdn上写 413. 等差数列划分 1.有些思路了,写下看看. class Solution:def numberOfArithmeticSlice ...

  9. LeetCode--413. 等差数列划分

    413. 等差数列划分 思路:滑动窗口 如何理解每一次贡献值自增? 在三个数情况下 | | | Ans = 1 在四个数情况下 | | | | Ans = 1 + 2 在五个数情况下 | | | | ...

最新文章

  1. iOS 提示更新 业务逻辑
  2. 万能makefile深入浅出 - 第三篇
  3. java中如何数组是如何赋值的?
  4. java.lang.ClassNotFoundException: org.apache.log4j.Logger
  5. HTML5 画布变换
  6. Java设计模式之七大结构型模式(附实例和详解)
  7. WCF透明代理类,动态调用,支持async/await
  8. 【python+selenium】保留浏览器的自定义设置,不恢复浏览器默认设置
  9. Spark亚太研究院王家林:从技术的…
  10. 如何在Google表格中使用QUERY函数
  11. Android TTS语音播报实践
  12. [zt] dmt、lmt、mssm, assm (SEGMENT SPACE MANAGEMENT AUTO) 的一点总结
  13. 带下波浪线的textView
  14. ACM数论 裴蜀定理(贝祖定理)
  15. [Geek Challenge 2022]Web部分 writeup by q1jun
  16. 营销老炮儿征战史:重视终端
  17. 关于H3C交换机配置MSTP
  18. 激光SLAM理论与实践-第五期 第一次作业(矩阵坐标变换)
  19. leetcode597. 好友申请 I :总体通过率(必会)
  20. Quora 没想到能这么红

热门文章

  1. 系统服务有多个mysql_windows系统中安装多个Mysql服务
  2. 东南大学4系短学期matlab,东南大学短学期混凝土教学实践
  3. sentinel接入网关应用_阿里Sentinel整合Zuul网关详解
  4. tableau linux无网络安装_举个栗子!Tableau 技巧(127):购物篮分析之关联购买
  5. eltree ref什么时候有_DBA:为什么你老写慢SQL
  6. java并发中的延迟初始化
  7. webview中cookie的读取与保存
  8. input 打开文件夹事件委托
  9. webpack+vue+vueRouter模块化构建完整项目实例详细步骤-入门篇
  10. Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤分享