题目
描述
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)
数据范围:1≤n≤10 ,数组中的值满足 1≤val≤10
要求:空间复杂度 O(n),时间复杂度 O(nlogn)
思路
先转化为set去重,再排序,然后每一段连续序列计算长度,记录最长的长度。
代码
python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# max increasing subsequence
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
def MLS(self , arr: List[int]) -> int:
# write code here
arr = list(set(arr))
arr.sort()
cv = arr[0]
res = 0
tmp = 0
for v in arr:
if v==cv:
tmp+=1
cv+=1
else:
res = max(tmp, res)
cv=v+1
tmp=1
res = max(tmp, res)
return res
c++版本:
无