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