关键点
- 找到最长子序列的起始数。通过判断当前值的前一个数判断这个数是不是起始数
- 找到起始数后,依次加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