LeetCode128. 最长连续序列

Posted wemo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode128. 最长连续序列相关的知识,希望对你有一定的参考价值。

题目

给定一个未排序的整数数组,找出最长连续序列的长度、
要求算法的时间复杂度为O(n).

示例

输入:[100, 4, 200, 1, 3, 2]
输出:4
解释:最长连续序列是[1, 2,  3, 4]。它的长度为4

思路

思路一

  1. 先由小到大进行排序
  2. 考虑三种情况:
    1. 前后相差1,则是连续序列
    2. 前后相等,循环continue
    3. 最后一个元素,break

代码


def longestConsecutive(nums) -> int:
????if nums:
????????nums.sort()
????????#print(nums)
????????ans = [] #储存最大序列
????????max_seq = 1
????????for i, val in enumerate(nums):
????????????#print("序号:%s 值:%s"%(i, val)) 序号从零开始
????????????if(i == len(nums) - 1):
????????????????ans.append(max_seq)
????????????????break;
????????????if(nums[i] == nums[i+1]):
????????????????continue
????????????if(nums[i] - nums[i+1] == -1):
????????????????max_seq += 1
????????????else:
????????????????ans.append(max_seq)
????????????????max_seq = 1
????????return max(ans)
????else:
????????return 0
if __name__ == "__main__":
????nums = [100, 4, 200, 1, 3, 2]
????print(longestConsecutive(nums))

以上是关于LeetCode128. 最长连续序列的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列c++/java详细题解

LeetCode第128题—最长连续序列—Python实现

leetcode 128:最长连续序列

LeetCode 128. 最长连续序列