File tree Expand file tree Collapse file tree 5 files changed +107
-0
lines changed Expand file tree Collapse file tree 5 files changed +107
-0
lines changed Original file line number Diff line number Diff line change 1+ // https://leetcode.com/problems/climbing-stairs/
2+
3+ // TC: O(N)
4+ // SC: O(N)
5+
6+ var climbStairs = function ( n ) {
7+ const stairs = [ 1 , 2 ] ;
8+
9+ for ( let i = 2 ; i < n ; i ++ ) {
10+ stairs [ i ] = stairs [ i - 1 ] + stairs [ i - 2 ] ;
11+ }
12+
13+ return stairs [ n - 1 ] ;
14+ } ;
15+
16+ console . log ( climbStairs ( 5 ) ) ;
Original file line number Diff line number Diff line change 1+ // https://leetcode.com/problems/maximum-subarray/
2+
3+ // Time Limit Exceeded
4+ function maxSubArray ( nums : number [ ] ) : number {
5+ const acc = [ ]
6+ const len = nums . length
7+
8+ for ( let size = 1 ; size <= len ; size ++ ) {
9+ for ( let start = 0 ; start <= len - size ; start ++ ) {
10+ const sub = nums . slice ( start , start + size )
11+ const sum = sub . reduce ( ( acc , num ) => acc += num , 0 )
12+ acc . push ( sum )
13+ }
14+ }
15+
16+ return acc . sort ( ( a , b ) => b - a ) [ 0 ]
17+ } ;
18+
19+ // TC: O(n)
20+ // SC: O(n)
21+
22+ function maxSubArray ( nums : number [ ] ) : number {
23+ const dp = [ ...nums ] ;
24+ let max = dp [ 0 ] ;
25+
26+ for ( let i = 1 ; i < nums . length ; i ++ ) {
27+ dp [ i ] = Math . max ( nums [ i ] , dp [ i - 1 ] + nums [ i ] ) ;
28+ max = Math . max ( max , dp [ i ] ) ;
29+ }
30+
31+ return max ;
32+ }
Original file line number Diff line number Diff line change 1+ // https://leetcode.com/problems/number-of-1-bits/
2+
3+ // TC: O(logN) - n을 2로 나누며 1을 셈
4+ // SC: O(1) - 배열을 사용하지 않고, 변수만 사용하여 추가 메모리 x
5+
6+ function hammingWeight ( n : number ) : number {
7+ let answer = 0
8+
9+ while ( n > 0 ) {
10+ answer += n % 2
11+ n = Math . floor ( n / 2 )
12+ }
13+
14+ return answer
15+ }
Original file line number Diff line number Diff line change 1+ // https://leetcode.com/problems/valid-anagram/submissions/1603502655/
2+
3+ // TC: O(NlogN)
4+ // SC: O(N)
5+
6+ var isAnagram = function ( s , t ) {
7+ return s . split ( "" ) . sort ( ) . join ( "" ) === t . split ( "" ) . sort ( ) . join ( "" )
8+ } ;
9+
10+ // TC: O(N)
11+ // SC: O(N)
12+
13+ var isAnagram = function ( s , t ) {
14+ const map = new Map ( )
15+
16+ for ( const char of s ) {
17+ if ( map . has ( char ) ) map . set ( char , map . get ( char ) + 1 )
18+ else map . set ( char , 1 )
19+ }
20+
21+ for ( const char of t ) {
22+ if ( ! map . has ( char ) ) return false
23+ else map . set ( char , map . get ( char ) - 1 )
24+ }
25+
26+ for ( const value of map . values ( ) ) {
27+ if ( value !== 0 ) return false
28+ }
29+
30+ return true
31+ } ;
32+
33+ console . log ( isAnagram ( s = "anagram" , t = "nagaram" ) )
Original file line number Diff line number Diff line change 1+ // https://leetcode.com/problems/valid-palindrome/
2+
3+ // TC: O(n)
4+ // SC: O(n)
5+
6+ function isPalindrome ( s : string ) : boolean {
7+ const str = ( s . toLowerCase ( ) . match ( / [ a - z 0 - 9 ] / g) || [ ] ) . join ( "" ) ;
8+ const reverse = str . split ( "" ) . reverse ( ) . join ( "" ) ;
9+
10+ return str === reverse ;
11+ }
You can’t perform that action at this time.
0 commit comments