链接:https://leetcode-cn.com/problems/arithmetic-slices/
这道题限制了子数组必须是连续的,所以说对每个元素只要检查这个元素和前面两个能不能构成等差数列就可以了。
java代码:
class Solution {
public int numberOfArithmeticSlices(int[] A) {
int[] dp = new int [A.length];//保存以每个元素为结尾的等差子数组的个数
for(int i = 2;i<A.length;i++)
{
if(A[i]+A[i-2]==2*A[i-1])
{
dp[i] = dp[i-1]+1;
}
}
int res = 0;
for(int i:dp)
res+=i;
return res;
}
}