令K表示到当前位置时有多少个连续的数字可以组成要求的序列,对于下一个位置的数字,若仍旧满足差相同,则在原来的基础上加上K+1个,否则个数不变,虚幻到最后一个位置是得到结果,代码如下:
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
int count = 0;
int k = 0;
for (int i = 2; i < A.size(); i++)
if (A[i - 1] - A[i] == A[i - 2] - A[i - 1])
count += ++k;
else
k = 0;
return count;
}
};