128. Longest Consecutive Sequence
problem description
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Your algorithm should run in O(n) complexity.
Example:
algorithm thought
这里要求需要使用O(n)时间求解,我们必须引入一个新的数据结果来使访问一个数据的时间控制到O(1)时间。那肯定是unordered_set类型,这个数据结构是基于hashmap实现的,插入和查询时间是O(1)。首先我们将所有数据存入set,然后顺序遍历原来的数组,如果数字的前一个在set中存在,continue,否则,表示这个数字是这段数字的开始,于是从这里开始顺序加一,每次结果在set中查询,知道不存在这个数字。最后求最长的解
code
algorithm analysis
开始将vector数据复制到unordered_set中,时间复杂度O(n).注意一定要使用这种办法而不是一个个插入的方法,如果一个个插入很可能耗时更多。然后遍历数组时间复杂度O(n),在循环中会再次遍历一遍顺序的数字,这里需要执行n次。 最后执行3n次,时间复杂度O(n)
Last updated