【python公司校招题】

【python欢聚时代】最长递增子序列?

2019-08-10  本文已影响0人  阿牛02

题目:给定一个序列 An = a1 ,a2 ,  ... , an ,找出最长的子序列使得对所有 i < j ,ai < aj 。求出这个子序列的长度。

输入描述:

输入的序列

输出描述:

最长递增子序列的长度

分析:遍历数组,记录每个递增子数组的长度,最终取最长的子数组。

code:

def maxLen(An):

    if len(An) == 1:

        return 1

    else:

        maxLen = 0

        i = 0

        while i < len(An)-1:

            res = 1

            j = i+1

            k = An[i]

            while j < len(An):

                if k <= An[j]:

                    res += 1

                    if res > maxLen:

                        maxLen = res

                    k = An[j]

                j += 1

            i += 1

    return maxLen

if __name__ == "__main__":

    An = [1, -1, 2, -2, 3, -3, 4]

    print(maxLen(An))

程序运行结果为:

4

上一篇 下一篇

猜你喜欢

热点阅读