Skip to content

Commit 2359fd8

Browse files
committed
Maximum Subarray
1 parent bd42bfb commit 2359fd8

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

maximum-subarray/casentino.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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+
}

0 commit comments

Comments
 (0)