[Leetcode446]Arithmetic Slices II - Subsequence

1 Arithmetic Slices
在等差数列的简单算法中,思路的重点就是对于符合等差的数列的扩展的数字游戏

以[2 4 6 8 10]为例子
  1. 前三位
    24 6为最短的等差数列 且只有dp =1

考虑8
2 4 6 8在上面等差数列扩展了一位,那么这一位的增加,等差数列可选
2 4 6 8 对 2 4 6的位数延长
4 6 8 增加的一个等差数列
所以为2

那么最后的等差数列就是 1+2=3;

2.Arithmetic Slices II - Subsequence
但是在变形体中,发现等差数列不仅下标相差1,而且可以随意从小到大去数字构建等差数列。
当然还是动态规划问题
但重点是怎么构建动态规划的递归方程。

考虑dp[i][diff]+=dp[j][diff]+1;

重点在于dp[i][diff]表示在0~i的所有数字中公差为diff的数字有多少个。

PS: diff=A[i]-A[j];

那么从图像看一下
2
4 2->1
6 4->1 2->2(公差为4的数字一共2个)
8 6->1 4->1 2->3
10 8->1 6->1 4->2 2->4
然后所有的项-1然后求和
1+2+1+3=7

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容