内容简介:给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为输入:[100, 4, 200, 1, 3, 2]解释:最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
给定一个未 排序 的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n) 。
示例:
输入:[100, 4, 200, 1, 3, 2]
输出: 4
解释:最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
思路
- 连续序列,首先要对传入数组进行 排序
-
连续序列的标志为
s[n] - s[n-1] === 1,针对这个来进行循环判断 -
定义循环中的最大长度
num以及最终长度max,每次需取max(num, max) - 当 s[n] - s[n-1] !== 1 时,及连续序列断开,需重置当前最大长度
- 特殊用例情况:[1,2,2,3]中的连续序列为[1,2,3],长度为3。因此在循环中当s[n] === s[n-1]时候,应跳过
直接上代码
/**
* @param {number[]} nums
* @return {number}
*/
var longestConsecutive = function(nums) {
if (!nums.length) return 0;
var sortedNums = nums.sort((a,b) => (a - b));
var i = 1;
var num = 1;
var max = 1;
while(i < sortedNums.length) {
if (sortedNums[i] - sortedNums[i - 1] === 1) {
num++;
} else if (sortedNums[i] === sortedNums[i - 1]) {
i++;
continue;
} else {
num = 1;
}
max = Math.max(max, num);
i++;
}
return max
};
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高性能网站建设进阶指南
Steve Souders / 口碑网前端团队 / 电子工业出版社 / 2010年4月 / 49.80元
性能是任何一个网站成功的关键,然而,如今日益丰富的内容和大量使用Ajax的Web应用程序已迫使浏览器达到其处理能力的极限。Steve Souders是Google Web性能布道者和前Yahoo!首席性能工程师,他在本书中提供了宝贵的技术来帮助你优化网站性能。 Souders的上一本畅销书《高性能网站建设指南》(High Performance Web Sites)震惊了Web开发界,它揭示......一起来看看 《高性能网站建设进阶指南》 这本书的介绍吧!