413. Arithmetic Slices

注意边界情况

class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& A) {
        if(A.size()<3)
        {
            return 0;
        }
        vector<int> dp;
        int count=1;
        int sum=0;
        int minus=A[1]-A[0];
        for(int i=2;i<A.size();i++)
        {
            if(minus==A[i]-A[i-1])
            {
                count++;
            }
            else
            {
                minus=A[i]-A[i-1];
                dp.push_back(count);
                count=1;
            }
        }
        if(minus==A[A.size()-1]-A[A.size()-2])
        {
            dp.push_back(count);
        }
        for(int i=0;i<dp.size();i++)
        {
            if(dp[i]>=2)
            {
                sum+=(dp[i]+1-2)*(dp[i]+1-2+1)/2;
            }
        }
        return sum;
        
    }
};

猜你喜欢

转载自blog.csdn.net/hj13547816754/article/details/79927450