题解 | #Redraiment的走法#

Redraiment的走法

https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa

#参考了大佬的解法。用迭代需要两层嵌套,一个判断条件迭代参数。用递归求每个L(i)只需要一层嵌套,一个判断条件迭代参数

#需要注意,要用map将所有输入的梅花桩高度字符,转成int格式

#就是求最小子序列

k=input()

nums=list(map(int,input().split()))

memo=dict()

def L(i,nums):

    if i in memo:

        return memo[i]

    if i==len(nums)-1:

        memo[i]=1

        return 1

    

    max_len=1

    #只需要一个循环

    for j in range(i+1,len(nums)):

        if nums[j]>nums[i]:#仅寻找能构成递增序列的nums[j]

            max_len=max(

                L(j,nums)+1,max_len #不断更新max_len,max_len初始值为1

                )

    memo[i]=max_len

    return max_len

    

ret=[L(i,nums) for i in range(len(nums))]

# print(ret)

print(max(ret))

全部评论

相关推荐

10-11 15:42
皖西学院 Java
青鱼LINK:我硕士,也是java0面试,吾道不孤
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务