Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 413. 等差数列划分(DP)

LeetCode 413. 等差数列划分(DP)

作者头像
Michael阿明
发布于 2021-02-20 06:41:54
发布于 2021-02-20 06:41:54
40100
代码可运行
举报
运行总次数:0
代码可运行

1. 题目

一个数列的等差数列子数组有多少个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [1, 2, 3, 4]

返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 
		以及自身 [1, 2, 3, 4]

2. 解题

状态公式 i f ( A [ i ] − A [ i − 1 ] = A [ i − 1 ] − A [ i − 2 ] ) , t h e n d p [ i ] = d p [ i − 1 ] + 1 , i > = 2 if (A[i]-A[i-1] =A[i-1]-A[i-2]) , \quad then \quad dp[i] = dp[i-1]+1, i>=2 if(A[i]−A[i−1]=A[i−1]−A[i−2]),thendp[i]=dp[i−1]+1,i>=2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& A) {
        if(A.size() <= 2)
        	return 0;
        int dp[A.size()] = {0}, differ = A[1]-A[0], sum = 0;
        for(int i = 2; i < A.size(); ++i)
        {
        	if(A[i]-A[i-1] == differ)
    		{
    			dp[i] = dp[i-1]+1;
    			sum += dp[i];
    		}
        	else
        		differ = A[i]-A[i-1];
        }
        return sum;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode-413-等差数列划分
数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。
benym
2022/07/14
2200
413. 等差数列划分
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 1, 3, 5, 7, 9 数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P 如果满足以下条件,则称子数组(P, Q)为等差数组: 元素 A[P], A[p + 1], ..., A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 。 函数要返回数组 A 中所有为等差数组的子数组个数。 示例:
编程张无忌
2021/06/29
3590
动态规划 —— 子数组系列-等差数列划分
https://leetcode.cn/problems/arithmetic-slices/description/
迷迭所归处
2024/11/19
1010
动态规划 —— 子数组系列-等差数列划分
​LeetCode刷题实战413:等差数列划分
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/10/21
2760
【每日一题】413. 等差数列划分:动态规划,YYDS!
如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。
彤哥
2021/08/12
5000
【每日一题】413. 等差数列划分:动态规划,YYDS!
​LeetCode刷题实战446:等差数列划分 II - 子序列
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/11/24
2990
​LeetCode刷题实战446:等差数列划分 II - 子序列
题解:「力扣」第 413 题:等差数列划分(中等)
今天和大家分享的是「力扣」第 413 题:等差数列划分。这道题可以使用「滑动窗口」,也可以使用「动态规划」。
用户9848496
2022/09/26
3840
LeetCode 1027. 最长等差数列(DP)
回想一下,A 的子序列是列表 A[i_1], A[i_2], ..., A[i_k] 其中 0 <= i_1 < i_2 < ... < i_k <= A.length - 1。并且如果 B[i+1] - B[i]( 0 <= i < B.length - 1) 的值都相同,那么序列 B 是等差的。
Michael阿明
2020/07/13
1K0
【面试高频系列】等差数列划分问题(子数组版)
如果一个数列「至少有三个元素」,并且任意两个相邻元素之差相同,则称该数列为等差数列。
宫水三叶的刷题日记
2021/09/10
5860
【算法/序列】等差数列&&子序列&&算术序列&&最长对称子串
IsLand1314
2024/10/15
1500
【算法/序列】等差数列&&子序列&&算术序列&&最长对称子串
leetcode413. Arithmetic Slices
将包含大于等于三个元素且任意相邻两个元素之间的差相等的数组成为等差数列。现在输入一个随机数组,问该数组中一共可以找出多少组等差数列。
眯眯眼的猫头鹰
2019/05/13
3210
【Leetcode】动态规划 刷题训练(八)
若想求以i为结尾的所有子数组的等差数列的个数, 而子数组是连续的,想要构成等差数列,至少使i位置与 i-1和i-2位置构成等差数列
lovevivi
2023/10/17
2510
【Leetcode】动态规划 刷题训练(八)
【OJ】动规练习六
一、题目解析: 至少有三个元素才能构成等差数列,题目要求返回的是子序列等差数列的个数
zxctscl
2024/04/10
1000
【OJ】动规练习六
【序列DP】最长递增子序列的个数 / 最长定差子序列 / 等差数列划分 II - 子序列
定义状态表示:f[i] 为以i位置元素为结尾的所有子序列中,最后呈 “上升” 状态的最长子序列的长度;g[i] 为以i位置元素为结尾的所有子序列中,最后呈 “下降” 状态的最长子序列的长度。
_小羊_
2025/04/09
1020
【序列DP】最长递增子序列的个数 / 最长定差子序列 / 等差数列划分 II - 子序列
【面试高频系列】等差数列划分问题(子序列版)
这是 LeetCode 上的「446. 等差数列划分 II - 子序列」,难度为「困难」。
宫水三叶的刷题日记
2021/09/10
1.1K0
DP:子数组问题
介绍动态规划(DP)在解决子数组问题上的重要性,以及本文的目的——通过具体问题的分析和代码示例,帮助读者理解如何用DP解决子数组问题。
用户11305458
2024/10/09
1810
DP:子数组问题
【动态规划算法练习】day12
978. 最长湍流子数组 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。 更正式地来说,当 arr 的子数组 A[i], A[i+1], …, A[j] 满足仅满足下列条件时,我们称其为湍流子数组: 若 i <= k < j : 当 k 为奇数时, A[k] > A[k+1],且 当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j : 当 k 为偶数时,A[k] > A[k+1] ,且 当 k 为奇数时, A[k] < A[k+1]。
摘星
2023/10/15
1540
【动态规划算法练习】day12
leetcode413 Arithmetic Slices
题目 A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same. For example, these are arithmetic sequence: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 The foll
用户1665735
2018/06/20
4950
LeetCode笔记:413. Arithmetic Slices
题目的意思就是找数组中有多少节三个数以上组成的等差数列。我的做法一个个数开始往后遍历,对每个数都看能找几节,从3个数一截开始判断,如果是就算一节,然后长度加一再判断,知道数组末尾。对每个数都这样判断一次。至于怎么判断等差数列就很简单了。
Cloudox
2021/11/23
3310
LeetCode 1502. 判断能否形成等差数列
如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。
Michael阿明
2020/07/13
3640
相关推荐
LeetCode-413-等差数列划分
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验