刷力扣热题–第五天:128.最长子序列
菜鸟第五天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
找出最长的连续序列,先定义一个空列表,之后遍历整个数组,将数组按照大小插入,最终遍历一次,返回最大值:
但这样超出内存限制,有点想不出来怎么做了,看了一下官方解题过程,茅塞顿开,就只需要判断当前数是否为某一序列的最小值,若是,则向上递加至该元素不在序列内,否则就跳过.时间复杂度为O(N),空间复杂度为O(N)
3. 心得体会
这道题挺难想的,确实得对题目有着比较深刻的理解做起来才不费力,代码放下面了:
class Solution(object):
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums = set(nums)
max_length = 0
for num in nums:
if num - 1 not in nums:
current_num = num
current_streak = 1
while current_num + 1 in nums:
current_num += 1
current_streak += 1
max_length = max(max_length, current_streak)
return max_length
# temp_str = ''.join(str)
4.写作时长
7-7-13:50 == 7-7-15:00 七十分钟,任重而道远~