本文主要是介绍LeetCode - 128. Longest Consecutive Sequence - 思路详解- C++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.
Your algorithm should run in O(n) complexity.
翻译
假设有一个未排序整数数组,找出数组中最长的连续序列。
比如:数组【100,4,200,1,3,2】
最长的连续序列为【1,2,3,4】。则返回其长度为4
思路
我们使用map来求解。
首先将所有的数字映射到map<\int,bool>即表示该数存在
然后遍历数组,对每一个数组num[i],
每次加一,只要其存在且连续,同时计数加1。同时删除map中该元素。
每次减一,只要其存在且联系,同时计数加1。然后删除map中元素。
然后比较更新max。
分析:
将所有元素映射到map中时间复杂度为O(nlog);
然后判断是存在,时间复杂度为O(n)
删除元素,时间复杂度为O(nlogn)
所以整体时间时间复杂读为O(nlogn)
代码
class Solution {
这篇关于LeetCode - 128. Longest Consecutive Sequence - 思路详解- C++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!