Python习题:Python 判断是不是等差数列,要求算法时间复杂度为O(NlogN)
2017-03-09 10:58
411 查看
Python习题:Python 判断是不是等差数列,要求算法时间复杂度为O(NlogN)
知乎原帖:
https://zhuanlan.zhihu.com/p/23134333#comments
评论中答案总结及测试正确的修改代码如下:
1. 验证成功,但是原理上不会证明
注意 python3中/为浮点数除法,返回浮点数,//为整数除法,返回整除结果
知乎原帖:
https://zhuanlan.zhihu.com/p/23134333#comments
评论中答案总结及测试正确的修改代码如下:
1. 验证成功,但是原理上不会证明
注意 python3中/为浮点数除法,返回浮点数,//为整数除法,返回整除结果
A=[2,3,4] N=len(A) min1=min(A) max1=max(A) d1=(max1-min1)//(N-1) print(d1) #第一步,判断是否存在公差d1 if d1*(N-1) != (max1-min1):#判断是否整除,验证是否存在公差d1 print('不存在公差d1,不是等差数列') #第二步,判断公差是否为0 elif d1==0:#如果d1为0,则也是等差数列,但是d1不能作为被除数 print('数列元素相同,是等差数列') else: B=[0]*N for i in A: j=(i-min1)//d1 if d1 * j != (i-min1):#判断是否整除,即任意数之差是否是公差的整数倍 print(False, '不是等差数列') break else: B[j]=1 print(B)#观察过程 if sum(B)==N: print(True,'是等差数列') else: print(False,'不是等差数列')
相关文章推荐
- 算法习题49:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 有两个集合,两个集合都是10万个数据(已排序),判断B是不是A的子集,算法时间复杂度为Q(N)
- 判断一个链表是不是回文数,要求O(n)时间
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)