File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @description
3+ * brainstorming:
4+ * two pointer + hash table
5+ *
6+ * n = length of s
7+ * m = length of t
8+ * time complexity: O(n*n)
9+ * space complexity: O(n)
10+ */
11+ var minWindow = function ( s , t ) {
12+ const requiredMap = t . split ( "" ) . reduce ( ( map , char ) => {
13+ map . set ( char , ( map . get ( char ) ?? 0 ) + 1 ) ;
14+ return map ;
15+ } , new Map ( ) ) ;
16+ const requiredArray = [ ...requiredMap . entries ( ) ] ;
17+ const map = new Map ( ) ;
18+ const successRequired = ( ) =>
19+ requiredArray . every ( ( [ key , value ] ) => map . get ( key ) >= value ) ;
20+
21+ let answer = "" ;
22+ let start = 0 ;
23+
24+ for ( let i = 0 ; i < s . length ; i ++ ) {
25+ if ( requiredMap . has ( s [ i ] ) ) map . set ( s [ i ] , ( map . get ( s [ i ] ) ?? 0 ) + 1 ) ;
26+
27+ while ( successRequired ( ) ) {
28+ const now = s . slice ( start , i + 1 ) ;
29+ answer = answer === "" || answer . length >= now . length ? now : answer ;
30+
31+ if ( map . has ( s [ start ] ) ) {
32+ map . set ( s [ start ] , map . get ( s [ start ] ) - 1 ) ;
33+ if ( map . get ( s [ start ] ) === - 1 ) map . delete ( s [ start ] ) ;
34+ }
35+
36+ start ++ ;
37+ }
38+ }
39+
40+ return answer ;
41+ } ;
You can’t perform that action at this time.
0 commit comments