(一)题目描述
(二)思想方法
题目理解:
(1)输入数组不一定是等差数组
(2)P+1<Q,说明数组至少包含三个元素,
(3)等差子数组按原数组顺序
方法:
{1,2,3} {1,2,3} 1个
{1,2,3,4} {1,2,3,4} + {1,2,3} + {2,3,4} 3个
{1,2,3,4,5} {1,2,3,4,5} + {1,2,3,4} + {2,3,4,5} + {1,2,3} + {2,3,4} + {3,4,5} 6个
{1,2,....,n} -> ...... -> 1+2+...+n
A[i-1] A[i] A[i+1] 为三个数
A[i+1] -A[i] 与A[i] -A[i-1]相等,则等差。count++
(三)代码实现
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A)
{
int sum=0,count=1;
if(A.size()<3) return 0;
for(int i=1;i<A.size()-1;i++)
{
if(A[i]-A[i-1]==A[i+1]-A[i])
sum+=(count++);
else
count=1;
}
return sum;
}
};