美文网首页【python公司校招题】
【python欢聚时代】最长递增子序列?

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

作者: 阿牛02 | 来源:发表于2019-08-10 20:10 被阅读0次

    题目:给定一个序列 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

    相关文章

      网友评论

        本文标题:【python欢聚时代】最长递增子序列?

        本文链接:https://www.haomeiwen.com/subject/dhyrjctx.html