Python习题:Python 判断是不是等差数列,要求算法时间复杂度为O(NlogN)

    xiaoxiao2021-03-25  131

    Python习题:Python 判断是不是等差数列,要求算法时间复杂度为O(NlogN) 知乎原帖: 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,'不是等差数列')
    转载请注明原文地址: https://ju.6miu.com/read-9598.html

    最新回复(0)