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