等差数列划分
找出所有段最长的等差数列,假如说一段等差数列的长度为
,那么就有
个子数组是等差数列数组。
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& a) {
int n = a.size() ,ans = 0;
vector<int> dp(n,0);
for(int i=2;i<n;i++){
if(a[i]+a[i-2] == 2*a[i-1]){
dp[i] = dp[i-1]+1;
}
}
for(int x:dp){
ans += x;
}
return ans;
}
};
这个想法与这道题十分相似,代码也即为相似。