class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
int len=A.size();
if(len<3){return 0;}//若是数组个数<3,则没有;
int count=0;//每次增加的等差数列个数
int sum=0;//总的数量;
for(int i=2;i!=len;i++){//从数组的第三个开始;
if((A[i]-A[i-1])==(A[i-1]-A[i-2])){
count++;//若是前面三个为等差数列,则count+1;
sum +=count;//保存目前为止的等差数列个数;
}
else{
count=0; //否则弃掉之前的累加;
}
}
return sum;
}
};
思路:
从数组中第三个值开始,进行往前判断,若是前面三个为等差数列就count+1;并且进行累计(即等差数列中值个数每增加1个,等差数列个数在原始基础上增加count++个),若是前三个不是等差数列,则重置count的值为0;最后输出累计值sum即可;