413. Arithmetic Slices(C++)

来源:互联网 发布:中韩萨德问题 知乎 编辑:程序博客网 时间:2024/06/10 21:16

题目:

https://leetcode.com/problems/arithmetic-slices/?tab=Description

翻译:

如果数字序列由至少三个元素组成,并且任何两个连续元素之间的差相同,则该数字序列被称为算术。
例如,这些是算术序列:

1,3,5,7,9
7,7,7,7
3,-1,-5,-9
以下序列不是算术。
1,1,2,5,7

给出由N个数字组成的零索引数组A. 该阵列的片是任何一对整数(P,Q),使得0 <= P

思路:

答案:

class Solution {public:    int numberOfArithmeticSlices(vector<int>& A) {         int n = A.size();         if (n < 3)   return 0;//最少就是3个一组         vector<int> dp(A.size(), 0);         int res = 0;         for (int i = 2; i < n; i ++) //         {           if (A[i] - A[i - 1] == A[i - 1] - A[i - 2])                dp[i] = dp[i - 1] + 1;            res += dp[i];         }        return res;    }};
0 0