题目:
给一个整数数组, 找到其中包含最多连续数的子集,比如给:15, 7, 12, 6, 14, 13, 9, 11,则返回: 5:[11, 12, 13, 14, 15] 。最简单的方法是sort然后scan一遍,但是要o(nlgn),有什么O(n)的方法吗?
分析:
我们先来学习一种叫做并查集的数据结构。
并查集(Disjoint set或者Union-find set)是一种简单的用途广泛的算法和数据结构。并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。
并查集可以方便地进行以下三种操作: