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