最简单的解法就是3个一组,4个一组这样暴力的去遍历,效率低下。
所以通过找规律发现,等差数列每增加一个,总数增加的个数也是一个等差数列。
int numberOfArithmeticSlices(vector<int>& A) {
if (A.size()<3) return 0;
int count = 0;
int phase = 0;
for(int i = 0;i<A.size() - 2;i++) {
if (A[i+1] - A[i] == A[i+2] - A[i+1]){
count += ++phase;
} else {
phase = 0;
}
}
return count;
}
所以这种题可以自己先拿笔找找规律。