Skip to content

Commit b1436f3

Browse files
committed
add: Longest Consecutive Sequence solution
1 parent ba7602e commit b1436f3

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* [Idea]
3+
* O(n)์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ ๋ฐฉ์‹์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•จ. => ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ์ด ์•ˆ๋‚˜์„œ ์ผ์ผ์ด ๊ตฌ๊ฐ„์„ ํ™•์ธํ•ด ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ๋‹ค.
4+
* ๋ฐฐ์—ด์„ ์ˆœํšŒํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ์›์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Set์„ ์ด์šฉํ•˜๊ธฐ๋กœ ํ•จ.
5+
*
6+
* [Time Complexity]
7+
* O(n + n) => O(n)
8+
* - Set ์ƒ์„ฑ: O(n)
9+
* - for loop: O(n)
10+
* for loop ๋‚ด๋ถ€์— while loop๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ "์ฆ๊ฐ€ํ•˜๋Š” ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘์ ์ผ ๋•Œ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—" (์ด๊ฑธ ๋†“์ณ์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚ฌ์—ˆ๋‹ค..)
11+
* ๊ฐ ์›์†Œ์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋Š” ๊ฒฐ๊ตญ 1๋ฒˆ๋ฟ.
12+
*
13+
* [Space Complexity]
14+
* O(n)
15+
* Set์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ๊ณต๊ฐ„
16+
*/
17+
18+
function longestConsecutive(nums: number[]): number {
19+
const numSet = new Set<number>(nums);
20+
let longest = 0;
21+
22+
for (const startNum of numSet) {
23+
// ์ฆ๊ฐ€ํ•˜๋Š” ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘์ ์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ฒ€์‚ฌํ•œ๋‹ค. (๊ฐ™์€ ๊ตฌ๊ฐ„์„ ์ค‘๋ณตํ•ด์„œ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ)
24+
// nums.length๊ฐ€ 10000์ธ ๊ฒฝ์šฐ์— ๋œฌ Time Limit Exceeded๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•จ...
25+
if (numSet.has(startNum - 1)) {
26+
continue;
27+
}
28+
let length = 1;
29+
let currNum = startNum + 1;
30+
while (numSet.has(currNum)) {
31+
length++;
32+
currNum++;
33+
}
34+
longest = Math.max(longest, length);
35+
}
36+
37+
return longest;
38+
}

0 commit comments

Comments
ย (0)