原题链接:Leecode 413. 等差数列划分
DP:
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& nums) {
int n=nums.size(), res=0;
vector<int> dp(n,0);
for(int i=2;i<n;i++)
{
if(nums[i]-nums[i-1]==nums[i-1]-nums[i-2])
{
dp[i]=dp[i-1]+1;
res+=dp[i];
}
}
return res;
}
};
暴力:
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& nums) {
int n=nums.size(), res=0;
for(int i=n-1;i>0;i--)
{
int d=nums[i]-nums[i-1];
for(int j=i-1;j>0;j--)
{
if(nums[j]-nums[j-1]==d) res++;
else break;
}
}
return res;
}
};