Longest Ascending Subsequence(Binary Search)

Given an array A[0]...A[n-1] of integers, find out the length of the longest ascending subsequence.

Assumptions:

A is not null

Examples:

Input: A = {5, 2, 6, 3, 4, 7, 5}
Output: 4
Because [2, 3, 4, 5] is the longest ascending subsequence.

class Solution(object):
  def longest(self, array):
    if len(array) < 1:
      return 0
    tails = [0] * len(array)
    size = 0
    for x in array:
      i,j = 0,size
      while i < j:
        m = (i + j)/2
        if tails[m] < x:
          i = m + 1
        else:
          j = m
      tails[i] = x
      size = max(i+1,size)
    return size



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,451评论 0 10
  • 昨天晚上我已经决定了今天的作业,计划写今天一天是怎样度过的。我做了哪些事?怎样安排时间的? 昨晚睡觉前已经基本定下...
    风飘啊飘阅读 543评论 0 1
  • 往事匆匆 流年易逝 朝暮深草色 落瓣轻舞 残香犹存 熙月照无痕
    文抒苑阅读 316评论 5 5
  • 文/缪四儿 回去的路上将军阴着脸,小满倚着马车的围子别着脸不吭声。想起姬芜,心里懊悔当初没有跟他走,无论如何都是自...
    缪四儿阅读 317评论 3 4
  • 一周放假时间,似乎挺长。打算看职称,还有加班干业务,这么一看,根本不够用啊。
    江南囡紫阅读 139评论 0 0