题解 | #数组中的最长连续子序列#

数组中的最长连续子序列

http://www.nowcoder.com/practice/eac1c953170243338f941959146ac4bf

#
# max increasing subsequence
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def MLS(self , arr ):
        # write code here
        import heapq
        k = 1
        maxc = 1
        heapq.heapify(arr)                   #建小根堆
        x = heapq.heappop(arr)               #把最小的值赋值给x并弹出数组
        while len(arr):                      #当数组中全部元素都被弹出时就跳出循环
            y = heapq.heappop(arr)           #把下一个最小值赋值给y并弹出数组
            if y == x + 1:                   #如果相邻的两个最小值为连续自然数
                k += 1                       #该子序列连续的个数加一
                if k > maxc:                 #如果该子序列连续的个数较多
                    maxc = k                 #则为最长子序列
                x = y                        #将y的值给到x,便于与下一个最小值进行判断
            if y == x:
                continue
            else:                            #如果下一个最小值不连续
                k = 1                        #对新的子序列重新计数
                x = y
        return maxc
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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