Loading

[最大最长]最长递增子序列

class Solution:
    def lengthOfLIS(self, nums: List[int]) -> int:

        def find(nums, target):
            left = 0
            right = len(nums)

            while left <= right:
                mid = (left + right) // 2
                if nums[mid] >= target:
                    res = mid
                    right -= 1
                else:
                    left += 1

            return res

        n = len(nums)
        queue = [nums[0]]

        for i in range(1, n):
            if nums[i] > queue[-1]:
                queue.append(nums[i])
            else:
                index = find(queue, nums[i])
                queue[index] = nums[i]

        return len(queue)
posted @ 2024-10-04 09:42  Duancf  阅读(16)  评论(0)    收藏  举报