题解 | #Redraiment的走法#

Redraiment的走法

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

import bisect
def inc_max(l):
    dp = [1]*len(l) # 初始化dp,最小递增子序列长度为1
    arr = [l[0]] # 创建数组
    for i in range(1,len(l)): # 从原序列第二个元素开始遍历
        if l[i] > arr[-1]:
            arr.append(l[i])
            dp[i] = len(arr)
        else:
            pos = bisect.bisect_left(arr, l[i]) # 用二分法找到arr中第一个比ele_i大(或相等)的元素的位置
            arr[pos] = l[i]
            dp[i] = pos+1
    return dp 

while 1:
    try:
        num=int(input())
        ls=list(map(int,input().split()))
        max_step=0               
        for index in range(len(ls)):
            dp=inc_max(ls[index:])
            #print(dp)
            temp=0
            for i in dp:
                if i>temp:
                    temp=i
            if temp>max_step:
                max_step=temp
        print(max_step)
    except:
        break

全部评论

相关推荐

存一下准备挨个投一下
小小:银行秋招真题,欢迎大家来刷:牛客 -> 题库 -> 国央企笔试真题 。https://www.nowcoder.com/exam/company?questionJobId=195&subTabName=written_page
点赞 评论 收藏
分享
搞机墨镜猫:生产实习放项目下面,简化一点,如果有更好的东西就可以直接替换掉,比如你说你拆过他们的伺服电机很了解结构,可以照着画一下写成项目 项目看看能不能再找一个课设之类的包装一下(别写减速器),两个项目比较好,把项目后面的三位建模几个字去掉(这样会觉得有实物)
机械人,你的秋招第一份简...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务