File tree Expand file tree Collapse file tree 3 files changed +91
-0
lines changed
solution/1500-1599/1590.Make Sum Divisible by P Expand file tree Collapse file tree 3 files changed +91
-0
lines changed Original file line number Diff line number Diff line change 81
81
82
82
```
83
83
84
+ ### ** TypeScript**
85
+
86
+ ``` ts
87
+ function minSubarray(nums : number [], p : number ): number {
88
+ const n = nums .length ;
89
+ let mod = 0 ;
90
+ for (let i = 0 ; i < n ; i ++ ) {
91
+ mod = (nums [i ] + mod ) % p ;
92
+ }
93
+ if (! mod ) return 0 ;
94
+
95
+ let hashMap = new Map <number , number >();
96
+ hashMap .set (0 , - 1 );
97
+ let ans = n ;
98
+ let subMod = 0 ;
99
+ for (let i = 0 ; i < n ; i ++ ) {
100
+ let cur = nums [i ];
101
+ subMod = (subMod + cur ) % p ;
102
+ let target = (subMod - mod + p ) % p ;
103
+ if (hashMap .has (target )) {
104
+ let j = hashMap .get (target );
105
+ ans = Math .min (i - j , ans );
106
+ if (ans == 1 && ans != n ) {
107
+ return ans ;
108
+ }
109
+ }
110
+ hashMap .set (subMod , i );
111
+ }
112
+ return ans == n ? - 1 : ans ;
113
+ };
114
+ ```
115
+
84
116
### ** ...**
85
117
86
118
```
Original file line number Diff line number Diff line change 124
124
125
125
```
126
126
127
+ ### ** TypeScript**
128
+
129
+ ``` ts
130
+ function minSubarray(nums : number [], p : number ): number {
131
+ const n = nums .length ;
132
+ let mod = 0 ;
133
+ for (let i = 0 ; i < n ; i ++ ) {
134
+ mod = (nums [i ] + mod ) % p ;
135
+ }
136
+ if (! mod ) return 0 ;
137
+
138
+ let hashMap = new Map <number , number >();
139
+ hashMap .set (0 , - 1 );
140
+ let ans = n ;
141
+ let subMod = 0 ;
142
+ for (let i = 0 ; i < n ; i ++ ) {
143
+ let cur = nums [i ];
144
+ subMod = (subMod + cur ) % p ;
145
+ let target = (subMod - mod + p ) % p ;
146
+ if (hashMap .has (target )) {
147
+ let j = hashMap .get (target );
148
+ ans = Math .min (i - j , ans );
149
+ if (ans == 1 && ans != n ) {
150
+ return ans ;
151
+ }
152
+ }
153
+ hashMap .set (subMod , i );
154
+ }
155
+ return ans == n ? - 1 : ans ;
156
+ };
157
+ ```
158
+
127
159
### ** ...**
128
160
129
161
```
Original file line number Diff line number Diff line change
1
+ function minSubarray ( nums : number [ ] , p : number ) : number {
2
+ const n = nums . length ;
3
+ let mod = 0 ;
4
+ for ( let i = 0 ; i < n ; i ++ ) {
5
+ mod = ( nums [ i ] + mod ) % p ;
6
+ }
7
+ if ( ! mod ) return 0 ;
8
+
9
+ let hashMap = new Map < number , number > ( ) ;
10
+ hashMap . set ( 0 , - 1 ) ;
11
+ let ans = n ;
12
+ let subMod = 0 ;
13
+ for ( let i = 0 ; i < n ; i ++ ) {
14
+ let cur = nums [ i ] ;
15
+ subMod = ( subMod + cur ) % p ;
16
+ let target = ( subMod - mod + p ) % p ;
17
+ if ( hashMap . has ( target ) ) {
18
+ let j = hashMap . get ( target ) ;
19
+ ans = Math . min ( i - j , ans ) ;
20
+ if ( ans == 1 && ans != n ) {
21
+ return ans ;
22
+ }
23
+ }
24
+ hashMap . set ( subMod , i ) ;
25
+ }
26
+ return ans == n ? - 1 : ans ;
27
+ } ;
You can’t perform that action at this time.
0 commit comments