题目

难度:★★☆☆☆

类型:数组

方法:动态规划

力扣链接请移步本题传送门

更多力扣中等题的解决方案请移步力扣中等题目录

如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

例如,以下数列为等差数列:

1, 3, 5, 7, 9

7, 7, 7, 7

3, -1, -5, -9

以下数列不是等差数列。

1, 1, 2, 5, 7

数组 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 中所有为等差数组的子数组个数。

示例:

A = [1, 2, 3, 4]

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

解答

看到按照规律统计子数组个数这一类的问题,很快地可以想到用动态规划来解决。

定义数组dp,维度与输入A一致,dp[i]表示以A[i]结尾的等差子数组的个数,dp数组中的元素全部初始化为零,因为以Ai结尾的等差子数组的个数最少为零。

从第三个数字开始遍历数组,如果遇到以该数组结尾的连续三个元素是等差的,那么说明发现新的等差子数组,或者原有的等差子数组继续延长。这时,以A[i]结尾的等差数组的个数为以A[i-1]结尾的等差子数组的个数加一,简单的例子就可以说明。可以获得递推关系式:

dp[i] = dp[i-1] + 1

最终,返回dp数组中所有元素和即可。

class Solution:

def numberOfArithmeticSlices(self, A):

dp = [0 for _ in range(len(A))]

for i in range(2, len(A)):

if A[i] - A[i - 1] == A[i - 1] - A[i - 2]:

dp[i] = dp[i - 1] + 1

return sum(dp)

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

python 等差数列_413. 等差数列划分(Python)相关推荐

  1. python使用什么格式划分语句块-python以什么划分语句块

    语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句: 在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是同样的缩进量:(推荐学习:Python视频教程) 缩进:Pyth ...

  2. python来进行社团划分

    利用python来进行社团划分,使用的是社团划分里面的GN算法. 程序代码如下 # -*- coding: utf-8 -*- """ Created on Sat Se ...

  3. 《机器学习》西瓜书课后习题4.3——python实现基于信息熵划分的决策树算法(简单、全面)

    <机器学习>西瓜书课后习题4.3--python实现基于信息熵划分的决策树算法 <机器学习>西瓜书P93 4.3 试编程实现基于信息熵进行划分选择的决策树算法,并为表4.3中数 ...

  4. python从小到大的顺序输出-python从小到大的顺序输出

    时间:2020-10-29 本页为您甄选多篇描写python从小到大的顺序输出,python从小到大的顺序输出精选,python从小到大的顺序输出大全,有议论,叙事 ,想象等形式.文章字数有400字. ...

  5. [Python面试][基础算法题]Python基础面试(基础算法题目较多)

    Python基础 文件操作 1.有一个jsonline格式的文件file.txt大小约为10K 2.补充缺失的代码 模块与包 3.输入日期, 判断这一天是这一年的第几天? 4.打乱一个排好序的list ...

  6. python queue 调试_学Python不是盲目的,是有做过功课认真去了解的

    有多少伙伴是因为一句'人生苦短,我用Python'萌生想法学Python的!我跟大家更新过很多Python学习教程普及过多次的Python相关知识,不过大家还是还得计划一下Python学习路线!Pyt ...

  7. 免费学python的网站-免费学习Python编程的3个优秀的网站资源

    用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言.如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多.这是快速学 ...

  8. 学习python需要什么基础-学习python需要什么基础吗?老男孩Python

    在很多人的记忆中python是一门非常简单的编程语言,也是很多转行人员的首选,不过因为大家对python不是很了解,所以比较关心学习python需要什么基础?其实python没有基础也是可以学习的,只 ...

  9. python 100days github_GitHub - rghwer/Python-100-Days: Python - 100天从新手到大师

    Python - 100天从新手到大师 作者:骆昊 最近有很多想学习Python的小伙伴陆陆续续加入我们的交流群,目前我们的交流群人数已经超过一万人,光靠我自己已经无法及时处理小伙伴们的入群申请,更无 ...

  10. 《偶像爱豆出身的编程语言排行第一得主!谁还敢嘲python没实力?》Python应用与实践

    可能有些标题党,没有针对某些具体的应用与实践.有哪些补充.不足请大家指出. Python是什么? Life is short, You need python 生命苦短,我用Python 1.1. P ...

最新文章

  1. 使用Word2010灵活掌握文档结构
  2. 【2019/4/30】周进度报告
  3. FPGA-YC输出一个4边框
  4. 解决win10 .net framework 3.5安装失败0x800f081f
  5. db2 删除索引_程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  6. vscode配置python 控制台/终端/TERMINAL 不输出/不显示 解决办法
  7. 没有基础的人可以学python吗-今天就来告诉你,没有编程基础的人适不适合学python...
  8. 新加用户被保护的解决办法
  9. 「leetcode」216.组合总和【回溯算法】详解!
  10. SDOI2015 序列统计
  11. Solidworks工程图转CAD映射配置指南
  12. swoole.so: undefined symbol: _zval_ptr_dtor
  13. 等额本息贷款 ——已知贷款本金、月还款额、贷款月数,反推贷款月利率、年利率-java实现
  14. ASP.NET微信群机器人管家系统,源码分享
  15. 电子邮箱是什么,电子邮箱注册值得入手的邮箱都在这!
  16. ipp协议 打印机 c语言,使用IPP(Internet打印协议)或LPR(行式打印机远程)在android中打印文件...
  17. 车辆航向角、横摆角、质心侧偏角
  18. minSdk(API 29) deviceSdk(API 127)
  19. 【转载】[学习笔记]共轭转置矩阵与伴随矩阵都用A*表示合理吗?
  20. STM8L探索套件学习笔记-EXTI外部中断

热门文章

  1. Java、JSP高速公路收费系统
  2. rails 分页插件 Kaminari 的 数组分页
  3. thinkpad选择启动项_ThinkPad如何设置光驱引导启动
  4. 英语砖石法则(三)----用好你的耳朵
  5. Python values()函数
  6. Webbygram:网页版Instagram再生
  7. VM技术(一)NES模拟器VM综述
  8. 作为初学者,第一次用div+css编写淘宝静态首屏
  9. Linux xampp apache启动失败解决办法
  10. 2021-07-27 Vue修改主页