博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法60----等差数列划分
阅读量:6242 次
发布时间:2019-06-22

本文共 798 字,大约阅读时间需要 2 分钟。

一、题目:

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

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

1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9

以下数列不是等差数列。

1, 1, 2, 5, 7

 

数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。

如果满足以下条件,则称子数组(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]。

二、思路:

数列 数列数目 当前数列数目与上一个数目的差
1、2、3 1 1
1、2、3、4 3 2
1、2、3、4、5 6 3
1、2、3、4、5、6 10 4

代码:

def function(arr):    if len(arr) < 3:        return 0    res , temp = 0 , 0    for i in range(2,len(arr)):        if arr[i] - arr[i-1] == arr[i-1] - arr[i-2]:            temp +=1            res += temp        else:            temp = 0    return resarr = [1,2,3,4]function(arr)

 

转载于:https://www.cnblogs.com/Lee-yl/p/9984667.html

你可能感兴趣的文章
linux下redis安装
查看>>
量子通信和大数据最有市场突破前景
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>