【413.等差数列划分】

目录

  • 一、题目描述
  • 二、算法原理
  • 三、代码实现

一、题目描述

【413.等差数列划分】_第1张图片

二、算法原理

【413.等差数列划分】_第2张图片

三、代码实现

class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& nums) 
    {
        int n=nums.size();
        if(n<3) return 0;
        vector<int> dp(n);
        dp[2]=dp[1]=dp[0]=0;
        if(nums[2]-nums[1]==nums[1]-nums[0])    dp[2]=1;
        int ret=dp[2];
        for(int i=3;i<n;i++)
        {
            if(nums[i]-nums[i-1]==nums[i-1]-nums[i-2])   dp[i]=dp[i-1]+1;
            else dp[i]=0;
            ret+=dp[i];
        }
        return ret;
    }
};

你可能感兴趣的:(动态规划,算法,leetcode,动态规划,c++)