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

最长上升子序列(二)

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

     * 很重要,必须要会
     * eg:arr={1, 3, 6, 7, 9, 4, 10, 5, 6}
     * --------0  1  2  3  4  5  6   7  8
     * 初始时:end[0]=arr[0]=1,R=0(R可以认为是end有效的范围内的长度-1)
     * 从下标为1开始遍历
     * i=1
     * 从0~0(即0~R)通过二分查找,从end数组中找到比arr[1]小的最右侧位置+1,明显是下标为1,更新值为end={1,3},R=1
     * i=2
     * 从0~1(即0~R)通过二分查找,从end数组中找到比arr[2]小的最右侧位置+1,明显是下标为2,更新值为end={1,3,6},R=2
     * i=3
     * 从0~2(即0~R)通过二分查找,从end数组中找到比arr[3]小的最右侧位置+1,明显是下标为3,更新值为end={1,3,6,7},R=3
     * i=4
     * 从0~3(即0~R)通过二分查找,从end数组中找到比arr[4]小的最右侧位置+1,明显是下标为4,更新值为end={1,3,6,7,9},R=4
     * i=5
     * 从0~4(即0~R)通过二分查找,从end数组中找到比arr[5]=4小的最右侧位置+1,明显是下标为3,更新值为end={1,3,4,7,9},R=4
     * i=6
     * 从0~4(即0~R)通过二分查找,从end数组中找到比arr[6]=10小的最右侧位置+1,明显是下标为5,更新值为end={1,3,4,7,9,10},R=5
     * i=7
     * 从0~5(即0~R)通过二分查找,从end数组中找到比arr[7]=5小的最右侧位置+1,明显是下标为3,更新值为end={1,3,4,5,9,10},R=5
     * i=8
     * 从0~5(即0~R)通过二分查找,从end数组中找到比arr[8]=6小的最右侧位置+1,明显是下标为4,更新值为end={1,3,4,5,6,10},R=5
     * 那么答案就是 R+1;

全部评论

相关推荐

后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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