File tree 5 files changed +148
-0
lines changed
longest-substring-without-repeating-characters
5 files changed +148
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {number }
4
+ */
5
+ var lengthOfLongestSubstring = function ( s ) {
6
+ let start = 0 ;
7
+ let maxLength = 0 ;
8
+ const seen = new Map ( ) ; // 문자 -> 마지막 인덱스
9
+
10
+ for ( let end = 0 ; end < s . length ; end ++ ) {
11
+ const char = s [ end ] ;
12
+
13
+ // 중복 문자가 이전에 등장했으면 start를 갱신
14
+ if ( seen . has ( char ) && seen . get ( char ) >= start ) {
15
+ start = seen . get ( char ) + 1 ;
16
+ }
17
+
18
+ seen . set ( char , end ) ; // 현재 문자 위치 갱신
19
+ maxLength = Math . max ( maxLength , end - start + 1 ) ;
20
+ }
21
+
22
+ return maxLength ;
23
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {number }
4
+ */
5
+ var lengthOfLongestSubstring = function ( s ) {
6
+ let start = 0 ;
7
+ let maxLength = 0 ;
8
+ const seen = new Map ( ) ; // 문자 -> 마지막 인덱스
9
+
10
+ for ( let end = 0 ; end < s . length ; end ++ ) {
11
+ const char = s [ end ] ;
12
+
13
+ // 중복 문자가 이전에 등장했으면 start를 갱신
14
+ if ( seen . has ( char ) && seen . get ( char ) >= start ) {
15
+ start = seen . get ( char ) + 1 ;
16
+ }
17
+
18
+ seen . set ( char , end ) ; // 현재 문자 위치 갱신
19
+ maxLength = Math . max ( maxLength , end - start + 1 ) ;
20
+ }
21
+
22
+ return maxLength ;
23
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * function ListNode(val, next) {
4
+ * this.val = (val===undefined ? 0 : val)
5
+ * this.next = (next===undefined ? null : next)
6
+ * }
7
+ */
8
+ /**
9
+ * @param {ListNode } head
10
+ * @return {ListNode }
11
+ */
12
+ function reverseList ( head ) {
13
+ let prev = null ;
14
+ let curr = head ;
15
+
16
+ while ( curr !== null ) {
17
+ let nextTemp = curr . next ;
18
+ curr . next = prev ;
19
+ prev = curr ;
20
+ curr = nextTemp ;
21
+ }
22
+
23
+ return prev ; // prev는 새로운 head
24
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } matrix
3
+ * @return {void } Do not return anything, modify matrix in-place instead.
4
+ */
5
+ var setZeroes = function ( matrix ) {
6
+ const m = matrix . length ;
7
+ const n = matrix [ 0 ] . length ;
8
+
9
+ let firstRowHasZero = false ;
10
+ let firstColHasZero = false ;
11
+
12
+ // 첫 행/열에 0이 있는지 확인
13
+ for ( let i = 0 ; i < m ; i ++ ) {
14
+ if ( matrix [ i ] [ 0 ] === 0 ) firstColHasZero = true ;
15
+ }
16
+ for ( let j = 0 ; j < n ; j ++ ) {
17
+ if ( matrix [ 0 ] [ j ] === 0 ) firstRowHasZero = true ;
18
+ }
19
+
20
+ // 마커로 0 표시
21
+ for ( let i = 1 ; i < m ; i ++ ) {
22
+ for ( let j = 1 ; j < n ; j ++ ) {
23
+ if ( matrix [ i ] [ j ] === 0 ) {
24
+ matrix [ i ] [ 0 ] = 0 ; // 해당 행 마킹
25
+ matrix [ 0 ] [ j ] = 0 ; // 해당 열 마킹
26
+ }
27
+ }
28
+ }
29
+
30
+ // 마커 기반으로 행/열 0 처리
31
+ for ( let i = 1 ; i < m ; i ++ ) {
32
+ if ( matrix [ i ] [ 0 ] === 0 ) {
33
+ for ( let j = 1 ; j < n ; j ++ ) {
34
+ matrix [ i ] [ j ] = 0 ;
35
+ }
36
+ }
37
+ }
38
+ for ( let j = 1 ; j < n ; j ++ ) {
39
+ if ( matrix [ 0 ] [ j ] === 0 ) {
40
+ for ( let i = 1 ; i < m ; i ++ ) {
41
+ matrix [ i ] [ j ] = 0 ;
42
+ }
43
+ }
44
+ }
45
+
46
+ // Step 4: 첫 행과 첫 열 처리
47
+ if ( firstRowHasZero ) {
48
+ for ( let j = 0 ; j < n ; j ++ ) {
49
+ matrix [ 0 ] [ j ] = 0 ;
50
+ }
51
+ }
52
+ if ( firstColHasZero ) {
53
+ for ( let i = 0 ; i < m ; i ++ ) {
54
+ matrix [ i ] [ 0 ] = 0 ;
55
+ }
56
+ }
57
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number } m
3
+ * @param {number } n
4
+ * @return {number }
5
+ */
6
+ var uniquePaths = function ( m , n ) {
7
+ const memo = { } ;
8
+
9
+ function dfs ( x , y ) {
10
+ if ( x >= m || y >= n ) return 0 ;
11
+ if ( x === m - 1 && y === n - 1 ) return 1 ;
12
+
13
+ const key = `${ x } ,${ y } ` ;
14
+ if ( key in memo ) return memo [ key ] ;
15
+
16
+ memo [ key ] = dfs ( x + 1 , y ) + dfs ( x , y + 1 ) ;
17
+ return memo [ key ] ;
18
+ }
19
+
20
+ return dfs ( 0 , 0 ) ;
21
+ } ;
You can’t perform that action at this time.
0 commit comments