只找最左边的那个端点,找到之后统计最长能达到的长度,并且更新
为了方便查找用哈希表存储数据
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums = set(nums)
res = 0
for num in nums:
if num-1 not in nums: #判断是否是最左边的端点,是的话才计算最长长度
curnum = num
curl = 1
while curnum+1 in nums: #计算最长长度
curnum += 1
curl += 1
res = max(res,curl)
return res
动态规划,拼接
只用更新端点的值是因为一段区间的中间点是都访问过的不会再取到
所以+1和-1只会遇到端点
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dic = dict()
maxl = 0
for num in nums:
if num not in dic:
left = dic.get(num-1,0)
right = dic.get(num+1,0)
curl = 1 + left + right
maxl = max(maxl,curl)
dic[num] = curl
dic[num-left] = curl
dic[num + right] = curl
return maxl