Skip to content

Commit 80b70e5

Browse files
committed
feat(2nd): Upload longest-consecutive-sequence
1 parent b5a47f6 commit 80b70e5

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed
Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,43 @@
11
/**
22
* Source: https://leetcode.com/problems/longest-consecutive-sequence/
3+
* ์š”์ : ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ์—ฐ์†๋œ ์ •์ˆ˜ ์‹œํ€€์Šค์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜
4+
* ํ’€์ด ์‹œ๊ฐ„: 48๋ถ„
35
* ํ’€์ด๋ฐฉ๋ฒ•: ์ •๋ ฌ ํ›„ ์ˆœํšŒ๋ฅผ ํ†ตํ•ด ์—ฐ์†๋œ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธ
4-
* ์‹œ๊ฐ„๋ณต์žก๋„: O(nlogn)
5-
* ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
6-
*
7-
* ์ƒ๊ฐ๋‚˜๋Š” ํ’€์ด๋ฐฉ๋ฒ•
6+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(nlogn) - ์ •๋ ฌ์ด ์ง€๋ฐฐ์ ์ธ ์—ฐ์‚ฐ
7+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(1) - ์ถ”๊ฐ€ ์ €์žฅ๊ณต๊ฐ„์ด ์ž…๋ ฅ ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์ง€ ์•Š์Œ (์ •๋ ฌ์€ in-place๋กœ ๊ฐ€์ •)
88
*/
9-
109
function longestConsecutive(nums: number[]): number {
10+
// ์—ฃ์ง€ ์ผ€์ด์Šค: ๋นˆ ๋ฐฐ์—ด์ด๋ฉด 0 ๋ฐ˜ํ™˜
1111
if (nums.length === 0) return 0;
12+
13+
// ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
1214
const sorted = nums.sort((a, b) => a - b);
13-
let prev = sorted[0];
14-
let result = 1;
15-
let candiResult = 1;
1615

17-
for (let current of sorted) {
18-
if (prev === current) continue;
19-
if (current === prev + 1) {
20-
candiResult += 1;
16+
let maxLength = 1; // ๊ฐ€์žฅ ๊ธด ์—ฐ์† ์‹œํ€€์Šค ๊ธธ์ด
17+
let currentLength = 1; // ํ˜„์žฌ ์—ฐ์† ์‹œํ€€์Šค ๊ธธ์ด
18+
let previousNum = sorted[0]; // ์ด์ „์— ์ฒ˜๋ฆฌํ•œ ์ˆซ์ž
19+
20+
// ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์—ฐ์† ์‹œํ€€์Šค ์ฐพ๊ธฐ
21+
for (let i = 1; i < sorted.length; i++) {
22+
const currentNum = sorted[i];
23+
24+
// ์ค‘๋ณต๋œ ๊ฐ’์€ ๊ฑด๋„ˆ๋œ€
25+
if (previousNum === currentNum) {
26+
continue;
27+
}
28+
29+
// ์—ฐ์†๋œ ๊ฐ’์ธ ๊ฒฝ์šฐ ํ˜„์žฌ ์‹œํ€€์Šค ๊ธธ์ด ์ฆ๊ฐ€
30+
if (currentNum === previousNum + 1) {
31+
currentLength++;
2132
} else {
22-
if (candiResult > result) {
23-
result = candiResult;
24-
}
25-
candiResult = 1;
33+
// ์—ฐ์†์ด ๋Š๊ธด ๊ฒฝ์šฐ, ์ตœ๋Œ€ ๊ธธ์ด ์—…๋ฐ์ดํŠธ ํ›„ ํ˜„์žฌ ์‹œํ€€์Šค ๊ธธ์ด ์ดˆ๊ธฐํ™”
34+
maxLength = Math.max(maxLength, currentLength);
35+
currentLength = 1;
2636
}
27-
prev = current;
37+
38+
previousNum = currentNum;
2839
}
2940

30-
if (candiResult > result) result = candiResult;
31-
return result;
41+
// ๋งˆ์ง€๋ง‰ ์‹œํ€€์Šค์˜ ๊ธธ์ด์™€ ์ตœ๋Œ€ ๊ธธ์ด ๋น„๊ตํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
42+
return Math.max(maxLength, currentLength);
3243
}

0 commit comments

Comments
ย (0)