Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit db2f7ce

Browse files
Create Longest_Consecutive_Sequence.js
1 parent a6ea1f6 commit db2f7ce

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
Longest Consecutive Sequence
3+
4+
https://leetcode.com/problems/longest-consecutive-sequence/
5+
6+
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
7+
8+
Your algorithm should run in O(n) complexity.
9+
10+
Example:
11+
12+
Input: [100, 4, 200, 1, 3, 2]
13+
Output: 4
14+
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
15+
*/
16+
17+
/**
18+
* @param {number[]} nums
19+
* @return {number}
20+
*/
21+
var longestConsecutive = function(nums) {
22+
if(nums.length === 0)
23+
return 0;
24+
var setNums = new Set();
25+
for(var i = 0; i < nums.length; i++)
26+
setNums.add(nums[i]);
27+
28+
var cons = 1;
29+
var currentCons = 1;
30+
for(var i = 0; i < nums.length; i++) {
31+
var number = nums[i];
32+
if(setNums.has(number)) {
33+
setNums.delete(number);
34+
var prevNum = number - 1;
35+
while(setNums.has(prevNum)){
36+
currentCons++;
37+
setNums.delete(prevNum);
38+
prevNum--;
39+
}
40+
41+
var nextNum = number + 1;
42+
while(setNums.has(nextNum)){
43+
currentCons++;
44+
setNums.delete(nextNum);
45+
nextNum++;
46+
}
47+
48+
if(currentCons > cons)
49+
cons = currentCons
50+
}
51+
currentCons = 1;
52+
}
53+
return cons;
54+
};
55+
56+
57+
var main = function() {
58+
console.log(longestConsecutive([100, 1, 200, 3, 2, 400, 201]));
59+
console.log(longestConsecutive([1,2,3,4, 100, 1, 200, 3, 2, 400, 201]));
60+
console.log(longestConsecutive([1, 400, 201, 403, 398]));
61+
console.log(longestConsecutive([]));
62+
console.log(longestConsecutive([2]));
63+
}
64+
65+
module.exports.main

0 commit comments

Comments
 (0)