File tree Expand file tree Collapse file tree 3 files changed +52
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ function climbStairs ( n : number ) : number {
2
+ if ( n <= 3 ) return n ;
3
+
4
+ // 첫 시도: 시간 복잡도 O(2^n), 공간 복잡도 O(n)
5
+ // return climbStairs(n - 1) + climbStairs(n - 2);
6
+
7
+ // 두번째 시도: 시간 복잡도 O(n), 공간 복잡도 O(1)
8
+ let prev1 = 2 , prev2 = 1 ;
9
+ for ( let i = 3 ; i <= n ; i ++ ) {
10
+ const curr = prev1 + prev2 ;
11
+ prev2 = prev1 ;
12
+ prev1 = curr ;
13
+ }
14
+
15
+ return prev1 ;
16
+ } ;
Original file line number Diff line number Diff line change
1
+ function productExceptSelf ( nums : number [ ] ) : number [ ] {
2
+ // 시간 복잡도: O(n), 공간 복잡도: O(1)
3
+ const n = nums . length ;
4
+ const answer = new Array ( n ) . fill ( 1 ) ;
5
+
6
+ // answer[i]에 left 곱 저장
7
+ for ( let i = 1 ; i < n ; i ++ ) {
8
+ answer [ i ] = answer [ i - 1 ] * nums [ i - 1 ] ;
9
+ }
10
+
11
+ // right 곱을 한 변수에 저장하면서 answer에 곱하기
12
+ let rightProduct = 1 ;
13
+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
14
+ answer [ i ] *= rightProduct ;
15
+ rightProduct *= nums [ i ] ;
16
+ }
17
+
18
+ return answer ;
19
+ }
Original file line number Diff line number Diff line change
1
+ function isAnagram ( s : string , t : string ) : boolean {
2
+ // 첫 시도: 시간 복잡도 O(n log n), 공간 복잡도 O(n)
3
+ // const sSort = s.split('').sort();
4
+ // const tSort = t.split('').sort();
5
+ // return JSON.stringify(sSort) === JSON.stringify(tSort);
6
+
7
+ // 시간 복잡도 O(n), 공간복잡도 O(1)
8
+ if ( s . length !== t . length ) return false ;
9
+
10
+ const count = new Array ( 26 ) . fill ( 0 ) ;
11
+ for ( let i = 0 ; i < s . length ; i ++ ) {
12
+ count [ s . charCodeAt ( i ) - 97 ] ++ ;
13
+ count [ t . charCodeAt ( i ) - 97 ] -- ;
14
+ }
15
+
16
+ return count . every ( c => c === 0 ) ;
17
+ } ;
You can’t perform that action at this time.
0 commit comments