关键点

  • 找到最长子序列的起始数。通过判断当前值的前一个数判断这个数是不是起始数
  • 找到起始数后,依次加1,判断是否在哈希集合中,如果不在则跳出
  • 计算长度考虑边界条件,如果是左边界闭区间,则需要减去起始数后加1,否则直接相减
#
# max increasing subsequence
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def MLS(self , arr ):
        # write code here
        arr_set = set(arr)
        ans = 0
        for i in range(len(arr)):
            if arr[i] - 1 in arr_set:
                continue
            start = arr[i]
            while start in arr_set:
                start += 1
            ans = max(ans, start - arr[i])
        return ans