File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You canโt perform that action at this time.
0 commit comments