解题思路:

注意事项:

参考代码:

import bisect
n=int(input())
l=list(map(int,input().split()))
d=[]#初始化列表
if n==0:#0个元素特判一下
        print(0)
else:
        d.append(l[0]) #初始化
        for i in l[1:]:
                if i>=d[-1]:
                        d.append(i)
                else:#替换掉第一个大于i的
                        index=bisect.bisect_right(d,i)
                        d[index]=i
        print(len(d))
        print(d)
"""bisect_right(d,i),d是有序列表,返回i该插入的位置,如果有和i相同的,返回
        最右侧的i的下一个位置,实现的功能和c++的upper_bound()函数功能相似
"""


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区