内容简介:给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为输入:[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
};
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
闪魂FLASH8网站建设实录
马谧铤 / 中国林业 / 2006-7 / 46.00元
《闪魂FLASH8网站建设实录》旨在提供以Flash(Flash 8.0为创作工具)为技术核心的整套互动网站的开发思路,其中包括了网站策划、平面设计、程序设计等实用的互联网应用技术。内容包括Photoshop CS2设计,FIash 8创作和ActionScript应用程序开发的操作流程。在技术学习的过程中.大家还将体会到顶级互动网站设计、网站建设的设计流程和思路。《闪魂FLASH8网站建设实录》......一起来看看 《闪魂FLASH8网站建设实录》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
XML、JSON 在线转换
在线XML、JSON转换工具