题目:
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;
}
};