寻找 Python 中最长递增子序列长度的程序
假设我们有一系列数字。我们必须找到最长递增子序列的长度。因此,如果输入类似于[6, 1, 7, 2, 8, 3, 4, 5],则输出将为 5,因为最长的递增子序列是[2,3,4,5,6]。
为了解决这个问题,我们将遵循以下步骤:
创建一个名为 tails 的数组,其大小与 nums 相同,并用 0 填充它。
size := 0
对于 nums 数组中的每个元素 x:
i := 0, j := size
当 i 与 j 不相同时,
mid := i + (j – i)/2
如果 tails[mid] < x,则 i := mid + 1,否则 j := mid
tails[i] := x
size := i + 1 和 size 中的最大值
返回 size。
让我们看看下面的实现以获得更好的理解:
示例
class Solution(object): def solve(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) return size ob = Solution() nums = [7, 2, 8, 3, 9, 4, 5, 6] print(ob.solve(nums))
输入
[7, 2, 8, 3, 9, 4, 5, 6]
输出
5
广告