File tree Expand file tree Collapse file tree 3 files changed +36
-45
lines changed
solution/0400-0499/0410.Split Array Largest Sum Expand file tree Collapse file tree 3 files changed +36
-45
lines changed Original file line number Diff line number Diff line change @@ -194,33 +194,30 @@ func splitArray(nums []int, k int) int {
194
194
195
195
``` ts
196
196
function splitArray(nums : number [], k : number ): number {
197
- let left = 0 ;
198
- let right = 0 ;
199
- for (const x of nums ) {
200
- left = Math .max (left , x );
201
- right += x ;
202
- }
197
+ let l = Math .max (... nums );
198
+ let r = nums .reduce ((a , b ) => a + b );
199
+
203
200
const check = (mx : number ) => {
204
- let s = 1 << 30 ;
205
- let cnt = 0 ;
201
+ let [s, cnt] = [0 , 0 ];
206
202
for (const x of nums ) {
207
203
s += x ;
208
204
if (s > mx ) {
209
205
s = x ;
210
- ++ cnt ;
206
+ if ( ++ cnt === k ) return false ;
211
207
}
212
208
}
213
- return cnt <= k ;
209
+ return true ;
214
210
};
215
- while (left < right ) {
216
- const mid = (left + right ) >> 1 ;
211
+
212
+ while (l < r ) {
213
+ const mid = (l + r ) >> 1 ;
217
214
if (check (mid )) {
218
- right = mid ;
215
+ r = mid ;
219
216
} else {
220
- left = mid + 1 ;
217
+ l = mid + 1 ;
221
218
}
222
219
}
223
- return left ;
220
+ return l ;
224
221
}
225
222
```
226
223
Original file line number Diff line number Diff line change @@ -188,33 +188,30 @@ func splitArray(nums []int, k int) int {
188
188
189
189
``` ts
190
190
function splitArray(nums : number [], k : number ): number {
191
- let left = 0 ;
192
- let right = 0 ;
193
- for (const x of nums ) {
194
- left = Math .max (left , x );
195
- right += x ;
196
- }
191
+ let l = Math .max (... nums );
192
+ let r = nums .reduce ((a , b ) => a + b );
193
+
197
194
const check = (mx : number ) => {
198
- let s = 1 << 30 ;
199
- let cnt = 0 ;
195
+ let [s, cnt] = [0 , 0 ];
200
196
for (const x of nums ) {
201
197
s += x ;
202
198
if (s > mx ) {
203
199
s = x ;
204
- ++ cnt ;
200
+ if ( ++ cnt === k ) return false ;
205
201
}
206
202
}
207
- return cnt <= k ;
203
+ return true ;
208
204
};
209
- while (left < right ) {
210
- const mid = (left + right ) >> 1 ;
205
+
206
+ while (l < r ) {
207
+ const mid = (l + r ) >> 1 ;
211
208
if (check (mid )) {
212
- right = mid ;
209
+ r = mid ;
213
210
} else {
214
- left = mid + 1 ;
211
+ l = mid + 1 ;
215
212
}
216
213
}
217
- return left ;
214
+ return l ;
218
215
}
219
216
```
220
217
Original file line number Diff line number Diff line change 1
1
function splitArray ( nums : number [ ] , k : number ) : number {
2
- let left = 0 ;
3
- let right = 0 ;
4
- for ( const x of nums ) {
5
- left = Math . max ( left , x ) ;
6
- right += x ;
7
- }
2
+ let l = Math . max ( ...nums ) ;
3
+ let r = nums . reduce ( ( a , b ) => a + b ) ;
4
+
8
5
const check = ( mx : number ) => {
9
- let s = 1 << 30 ;
10
- let cnt = 0 ;
6
+ let [ s , cnt ] = [ 0 , 0 ] ;
11
7
for ( const x of nums ) {
12
8
s += x ;
13
9
if ( s > mx ) {
14
10
s = x ;
15
- ++ cnt ;
11
+ if ( ++ cnt === k ) return false ;
16
12
}
17
13
}
18
- return cnt <= k ;
14
+ return true ;
19
15
} ;
20
- while ( left < right ) {
21
- const mid = ( left + right ) >> 1 ;
16
+
17
+ while ( l < r ) {
18
+ const mid = ( l + r ) >> 1 ;
22
19
if ( check ( mid ) ) {
23
- right = mid ;
20
+ r = mid ;
24
21
} else {
25
- left = mid + 1 ;
22
+ l = mid + 1 ;
26
23
}
27
24
}
28
- return left ;
25
+ return l ;
29
26
}
You can’t perform that action at this time.
0 commit comments