Python中最长的递增子序列

假设我们有一个未排序的整数列表。我们必须找到最长的增长子序列。因此,如果输入为[10,9,2,5,3,7,101,18],则输出将为4,因为递增的子序列为[2,3,7,101]

为了解决这个问题,我们将遵循以下步骤-

  • Trail:=长度为0到nums – 1的数组,并用0填充

  • 大小:= 0

  • 对于x的数字

    • 中:= i +(j-i)/ 2

    • 如果Trails [mid] <x,则i:= mid + 1,否则j:= mid

    • i:= 0,j:=大小

    • 当我不是j

    • Trails [i]:= x

    • 大小:= i + 1和大小的最大值

    • 返回尺寸

    让我们看下面的实现以更好地理解-

    示例

    class Solution(object):

       def lengthOfLIS(self, nums):

          tails =[0 for i in range(len(nums))]

          size = 0

          for x in nums:

             i=0

             j=size

             while i!=j:

                mid = i + (j-i)//2

                if tails[mid]< x:

                   i= mid+1

                else:

                   j = mid

                   tails[i] = x

                   size = max(i+1,size)

                   #print(tails)

          return size

    ob1 = Solution()print(ob1.lengthOfLIS([10,9,2,5,3,7,101,18]))

    输入值

    [10,9,2,5,3,7,101,18]

    输出结果

    4

    以上是 Python中最长的递增子序列 的全部内容, 来源链接: utcz.com/z/357589.html

    回到顶部