题解 | #最长上升子序列(二)#

最长上升子序列(二)

http://www.nowcoder.com/practice/4af96fa010c44638a7e112abf65f7237

使用 dp 的思路会超时,利用二分法查找每个数所在的位置,最终排序数组的长度即为最长上升子序列的长度

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 该数组最长严格上升子序列的长度
# @param a int整型一维数组 给定的数组
# @return int整型
#
import bisect
class Solution:
    def LIS(self , a: List[int]) -> int:
        # write code here
        if not a: return 0
        res = 0
        data = []
        for ai in a:
            idx = bisect.bisect_left(data, ai)
            if idx == len(data):
                res += 1
                data.append(ai)
            else:
                data[idx] = ai
        return res
全部评论

相关推荐

点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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