查看是否为等差序列

Posted acodingdg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看是否为等差序列相关的知识,希望对你有一定的参考价值。

刷知乎的时候看到的题目,思路是评论区大佬给的

有点像排序里的计数排序法

代码如下

def isArithmeticSequence(A):
    B = [0] * len(A)
    min_value = min(A)
    max_value = max(A)
    d = (max_value - min_value) // (len(A) - 1)
    for i in A:
        if (i - min_value) % d == 0:
            seq_num = (i - min_value) // d
            B[seq_num] = 1
    if sum(B) == len(A):
        return True
    else:
        return False

if __name__ == __main__:
    A = input("A sequence of numbers:
")
    A = [i for i in map(int, A.strip().split())]
    if isArithmeticSequence(A):
        print("Yes")
    else:
        print(No)
    

 

以上是关于查看是否为等差序列的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ [P2124] 等差子序列

[国家集训队]等差子序列

poj 1868 Antiarithmetic? 推断序列中是否有等差子序列

题解Luogu P2757 等差子序列 hash

[BZOJ2124]等差子序列

[BZOJ2124]等差子序列