File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ function maxSubArray ( nums : number [ ] ) : number {
2+ function subSums ( arr : number [ ] , left : number , right : number ) {
3+ if ( left === right ) {
4+ return nums [ left ] ;
5+ }
6+ const middle = Math . floor ( ( left + right ) / 2 ) ;
7+
8+ const leftMax = subSums ( arr , left , middle ) ;
9+ const rightMax = subSums ( arr , middle + 1 , right ) ;
10+ let leftSum = 0 ;
11+ let leftMaxSum = Number . NEGATIVE_INFINITY ;
12+ for ( let i = middle ; i >= left ; i -- ) {
13+ leftSum += arr [ i ] ;
14+ if ( leftMaxSum < leftSum ) {
15+ leftMaxSum = leftSum ;
16+ }
17+ }
18+ let rightSum = 0 ;
19+ let rightMaxSum = Number . NEGATIVE_INFINITY ;
20+ for ( let i = middle + 1 ; i <= right ; i ++ ) {
21+ rightSum += arr [ i ] ;
22+ if ( rightMaxSum < rightSum ) {
23+ rightMaxSum = rightSum ;
24+ }
25+ }
26+
27+ return Math . max ( leftMaxSum + rightMaxSum , leftMax , rightMax ) ;
28+ }
29+ return subSums ( nums , 0 , nums . length - 1 ) ;
30+ }
You can’t perform that action at this time.
0 commit comments