原题
https://leetcode-cn.com/problems/longest-consecutive-sequence/
解题思路
使用 Map 存储所有出现过的数字,如果数字是连续序列的开始,则计数并更新最大值。
代码
/**
* @param {number[]} nums
* @return {number}
*/
var longestConsecutive = function(nums) {
const myMap = {};
nums.forEach((num) => {
myMap[num] = true;
});
let res = 0;
Object.keys(myMap).forEach((num) => {
if (!myMap[num-1]) {
let currentNum = parseInt(num, 10);
let currentLength = 1;
while (myMap[currentNum+1]) {
++currentNum;
++currentLength;
}
res = Math.max(res, currentLength);
}
});
return res;
};
复杂度
- 时间复杂度 O(N)
- 空间复杂度 O(N)
网友评论