DP之最长上升子序列

最长上升子序列

def lengthOfLIS(self, nums):
    
    # 处理特殊情况
    if len(nums) <= 1:
        return len(nums)
    
    # 保存 该元素之前 的 最大上升子序列的长度
    mem = [1 for _ in range(len(nums))]
    
    for j in range(1, len(nums)):
        
        # 前面的元素都要遍历一遍
        for i in range(j):
            
            # 小于的话表明本元素可以与i号元素连成上升序列
            if nums[i] < nums[j]:
                
                # 最大的保存下来(状态转移方程)
                mem[j] = max(mem[j], mem[i] + 1)
                
    return max(mem)

你可能感兴趣的:(NLP)