摘要: 问题给出一个未排序的整数数组,找出最长的连续元素序列的长度。如:给出[100, 4, 200, 1, 3, 2],最长的连续元素序列是[1, 2, 3, 4]。返回它的长度:4。你的算法必须有O(n)的时间复杂度。初始思路要找连续的元素,第一反应一般是先把数组排序。但悲剧的是题目中明确要求了O(n)的时间复杂度,要做一次排序,是不能达到的。不过我们还是先来看看排序的方案要怎么实现。简单来说,排序后我们只要遍历数组,检查当前值减1是否等于上一个值,如果等,增加当前连续序列的计数;如果不等,将当前计数与当前最大值比较,如果更优替换最大值, 并重置计数为1。具体到细节上,我们还要考虑几个问题:- 第 阅读全文
posted @ 2013-05-26 12:14 Shawnone 阅读(10792) 评论(4) 推荐(0) 编辑