欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 动态规划-子数组系列——413.等差数列划分

动态规划-子数组系列——413.等差数列划分

2024/10/23 23:23:55 来源:https://blog.csdn.net/2301_80689220/article/details/143135118  浏览:    关键词:动态规划-子数组系列——413.等差数列划分

1.题目解析

测试用例:413.等差数列划分——力扣

测试用例

2.算法原理

1.状态表示

dp[i]:以第i个位置为结尾的子数组中等差数列的个数

2.状态转移方程

当遇到新的数可以与原来的等差数列构成等差数列说明此时多了一种等差数列的情况则dp[i]=dp[i-1]+1;反之不能构成等差数列的话则一定与前面的子数组无法构成等差数列,此时将dp[i]置为0

3. 初始化

因为等差数列至少三个数,因此要初始化dp表前两个数字,而前两个数一定不能构成等差数列,全部为0即可

4.填表顺序

从左到右

5.返回值

返回整个dp表所以元素的和

3.实战代码

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

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com