File tree Expand file tree Collapse file tree 5 files changed +129
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +129
-0
lines changed Original file line number Diff line number Diff line change
1
+ // ์๊ฐ๋ณต์ก๋: O(n)
2
+
3
+ /**
4
+ * @param {number[] } nums
5
+ * @return {boolean }
6
+ */
7
+ var containsDuplicate = function ( nums ) {
8
+ const seen = new Set ( ) ;
9
+ for ( let num of nums ) {
10
+ if ( seen . has ( num ) ) {
11
+ return true ; // ์ค๋ณต ๋ฐ๊ฒฌ
12
+ }
13
+ seen . add ( num ) ;
14
+ }
15
+ return false ; // ๋ชจ๋ ์์๊ฐ ๊ณ ์
16
+ } ;
17
+
Original file line number Diff line number Diff line change
1
+ // ์๊ฐ๋ณต์ก๋: O(n)
2
+
3
+ /**
4
+ * @param {number[] } nums
5
+ * @return {number }
6
+ */
7
+ var rob = function ( nums ) {
8
+ const n = nums . length ;
9
+ if ( n === 0 ) return 0 ;
10
+ if ( n === 1 ) return nums [ 0 ] ;
11
+
12
+ // DP ๋ฐฐ์ด ์ด๊ธฐํ
13
+ let prev2 = 0 ; // dp[i-2]
14
+ let prev1 = 0 ; // dp[i-1]
15
+
16
+ // ์ต๋ ์์ต ๊ณ์ฐ
17
+ for ( let num of nums ) {
18
+ const current = Math . max ( prev1 , prev2 + num ) ;
19
+ prev2 = prev1 ;
20
+ prev1 = current ;
21
+ }
22
+
23
+ return prev1 ;
24
+ } ;
25
+
Original file line number Diff line number Diff line change
1
+ // ์๊ฐ๋ณต์ก๋: O(n)
2
+
3
+ /**
4
+ * @param {number[] } nums
5
+ * @return {number }
6
+ */
7
+ var longestConsecutive = function ( nums ) {
8
+ // Set์ ์ฌ์ฉํด ์ค๋ณต ์ ๊ฑฐ
9
+ const numSet = new Set ( nums ) ;
10
+ let longestStreak = 0 ;
11
+
12
+ // ๊ฐ ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ์ํ์ค๋ฅผ ํ์
13
+ for ( let num of numSet ) {
14
+ // num์ด ์ํ์ค์ ์์์ ์ธ ๊ฒฝ์ฐ๋ง ํ์
15
+ if ( ! numSet . has ( num - 1 ) ) {
16
+ let currentNum = num ;
17
+ let currentStreak = 1 ;
18
+
19
+ // ํ์ฌ ์ํ์ค๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ธธ์ด ๊ณ์ฐ
20
+ while ( numSet . has ( currentNum + 1 ) ) {
21
+ currentNum ++ ;
22
+ currentStreak ++ ;
23
+ }
24
+
25
+ // ์ต๋ ๊ธธ์ด๋ฅผ ์
๋ฐ์ดํธ
26
+ longestStreak = Math . max ( longestStreak , currentStreak ) ;
27
+ }
28
+ }
29
+
30
+ return longestStreak ;
31
+ } ;
32
+
Original file line number Diff line number Diff line change
1
+ // ์๊ฐ๋ณต์ก๋: O(n)
2
+
3
+ /**
4
+ * @param {number[] } nums
5
+ * @param {number } k
6
+ * @return {number[] }
7
+ */
8
+ var topKFrequent = function ( nums , k ) {
9
+ // ๋น๋ ๊ณ์ฐ
10
+ const frequencyMap = new Map ( ) ;
11
+ for ( let num of nums ) {
12
+ frequencyMap . set ( num , ( frequencyMap . get ( num ) || 0 ) + 1 ) ;
13
+ }
14
+
15
+ // ๋ฒํท ์ ๋ ฌ
16
+ const bucket = Array ( nums . length + 1 ) . fill ( null ) . map ( ( ) => [ ] ) ;
17
+ for ( let [ num , freq ] of frequencyMap ) {
18
+ bucket [ freq ] . push ( num ) ;
19
+ }
20
+
21
+ // ๋น๋ ๋์ ์์๋ค ์ถ์ถ
22
+ const result = [ ] ;
23
+ for ( let i = bucket . length - 1 ; i >= 0 && result . length < k ; i -- ) {
24
+ if ( bucket [ i ] . length > 0 ) {
25
+ result . push ( ...bucket [ i ] ) ;
26
+ }
27
+ }
28
+
29
+ return result . slice ( 0 , k ) ; // ์์ k๊ฐ์ ์์ ๋ฐํ
30
+ } ;
31
+
Original file line number Diff line number Diff line change
1
+ // ์๊ฐ๋ณต์ก๋: O(n)
2
+
3
+ /**
4
+ * @param {string } s
5
+ * @return {boolean }
6
+ */
7
+ var isPalindrome = function ( s ) {
8
+ // ์ ์ฒ๋ฆฌ - ์ํ๋ฒณ๊ณผ ์ซ์๋ง ๋จ๊ธฐ๊ณ ์๋ฌธ์๋ก ๋ณํ
9
+ const cleanString = s . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 ] / g, "" ) ;
10
+
11
+ // ์ ๋์์ ํฌ์ธํฐ๋ฅผ ์ด๋ํ๋ฉฐ ํ์ธ
12
+ let left = 0 , right = cleanString . length - 1 ;
13
+
14
+ while ( left < right ) {
15
+ if ( cleanString [ left ] !== cleanString [ right ] ) {
16
+ return false ; // ๋์นญ์ด ๊นจ์ง๋ฉด false
17
+ }
18
+ left ++ ;
19
+ right -- ;
20
+ }
21
+
22
+ return true ; // ๋์นญ์ด ์ ์ง๋๋ฉด true
23
+ } ;
24
+
You canโt perform that action at this time.
0 commit comments