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