Skip to content

Commit 4c42e81

Browse files
committed
add: solve #240 Longest Consecutive Sequence with ts
1 parent dc36e33 commit 4c42e81

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ์—ฐ์†๋œ ์ˆซ์ž ์‹œํ€€์Šค์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
3+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
4+
* - O(n): Set์— ์ˆซ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ฐ ์ˆซ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์—ฐ์†๋œ ์‹œํ€€์Šค๋ฅผ ๊ณ„์‚ฐ
5+
* - ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
6+
* - O(n): ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ Set ์‚ฌ์šฉ
7+
*
8+
* @param {number[]} nums - ์ •์ˆ˜ ๋ฐฐ์—ด
9+
* @returns {number} - ๊ฐ€์žฅ ๊ธด ์—ฐ์†๋œ ์ˆซ์ž ์‹œํ€€์Šค์˜ ๊ธธ์ด
10+
*/
11+
function longestConsecutive(nums: number[]): number {
12+
if (nums.length === 0) return 0; // ๋นˆ ๋ฐฐ์—ด ์ฒ˜๋ฆฌ (๊ธธ์ด 0 ๋ฐ˜ํ™˜)
13+
14+
// 1. ๋ฐฐ์—ด์„ Set์— ์ €์žฅํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ๋น ๋ฅธ ์กฐํšŒ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ O(n)
15+
const numSet = new Set(nums);
16+
17+
let longestSeq = 0; // ๊ฐ€์žฅ ๊ธด ์—ฐ์† ์‹œํ€€์Šค ๊ธธ์ด๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜
18+
19+
// 2. ๊ฐ ์ˆซ์ž๊ฐ€ ์‹œํ€€์Šค์˜ ์‹œ์ž‘์ ์ธ์ง€ ํ™•์ธ
20+
for (const num of numSet) {
21+
// ์ˆซ์ž `num`์ด ์‹œํ€€์Šค์˜ ์‹œ์ž‘์ ์ธ์ง€ ํ™•์ธ
22+
// (num-1์ด Set์— ์—†๋‹ค๋ฉด num์€ ์‹œํ€€์Šค์˜ ์‹œ์ž‘์ )
23+
if (!numSet.has(num - 1)) {
24+
// ์ƒˆ๋กœ์šด ์‹œํ€€์Šค ์‹œ์ž‘
25+
let curNum = num;
26+
let curSeq = 1;
27+
28+
// 3. ์‹œํ€€์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐ O(n)
29+
while (numSet.has(curNum + 1)) {
30+
curNum += 1; // ํ˜„์žฌ ์ˆซ์ž๋ฅผ 1 ์ฆ๊ฐ€
31+
curSeq += 1; // ์‹œํ€€์Šค ๊ธธ์ด๋ฅผ 1 ์ฆ๊ฐ€
32+
}
33+
34+
// 4. ๊ฐ€์žฅ ๊ธด ์‹œํ€€์Šค ๊ธธ์ด๋ฅผ ์—…๋ฐ์ดํŠธ
35+
longestSeq = Math.max(longestSeq, curSeq);
36+
}
37+
}
38+
39+
return longestSeq; // ๊ฐ€์žฅ ๊ธด ์—ฐ์† ์‹œํ€€์Šค์˜ ๊ธธ์ด ๋ฐ˜ํ™˜
40+
}

0 commit comments

Comments
ย (0)