Python 中的最长递增子序列
pythonserver side programmingprogramming更新于 2025/11/23 1:16:17
假设我们有一个未排序的整数列表。我们必须找到最长的递增子序列。因此,如果输入是 [10,9,2,5,3,7,101,18],则输出将为 4,因为递增子序列是 [2,3,7,101]
为了解决这个问题,我们将遵循以下步骤 −
- trail := 长度为 0 到 nums 长度的数组 – 1,并用 0 填充
- size := 0
- for x in nums
- i := 0, j := size
- while i is not j
- mid := i + (j - i) / 2
- 如果 trails[mid] < x,则 i := mid + 1,否则 j := mid
- trails[i] := x
- size := i + 1 和 size 中的最大值
- 返回 size
让我们看看下面的实现以便更好地理解 −
示例
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

