leetcode 413 等差数列划分

等差数列关系,S>=2 Si-S(i-1)=S(i-1)-S(i-2);

dp[0]=dp[1]=0(因为必须为三个数) dp关系式 若是满足Si-S(i-1)=S(i-1)-S(i-2);则有dp[i]=dp[i-1]+1;理解为若该三个数为等差则加上前一个等差项和。

class Solution {
public:
    vector<int> a;
    int numberOfArithmeticSlices(vector<int>& A) {
        if(A.empty())return 0;
        int sum=0;
        int len=A.size();
        int dp[len]={0};
        for(int i=2;i<A.size();i++)
        {
            if(A[i]-A[i-1]==A[i-1]-A[i-2])
            {
                dp[i]=dp[i-1]+1;
            }
        }
        
        for(int i=0;i<len;i++)
        {
            sum+=dp[i];
        }
        return sum;
    }
   
};

 

posted on 2019-03-09 13:55  BigguesD  阅读(154)  评论(0编辑  收藏  举报

导航