const maxSubArray = (nums) => {
// initiate two variable, maxSum for total max, sum for current max
let maxSum = -Infinity
let currentSum = 0
// iterate through the nums, store sub-problems result
for(let i = 0; i < nums.length; i++){
//cumulating answers to the top
//compare currentSum add current number
//with current number and store the maximum value
currentSum = Math.max(nums[i], currentSum + nums[i])
//compare maxSum with currentSum and store the greater value
maxSum = Math.max(currentSum, maxSum)
}
return maxSum
}
Using kadane's algorithm
const maxSubArray = (nums) => {
// initiate two variable, maxSum for total max, sum for current max
let maxSum = -Infinity
let currentSum = 0
// iterate through the nums, store sub-problems result
for(let i = 0; i < nums.length; i++){
//cumulating answers to the top
//compare currentSum add current number
//with current number and store the maximum value
currentSum = Math.max(nums[i], currentSum + nums[i])
//compare maxSum with currentSum and store the greater value
maxSum = Math.max(currentSum, maxSum)
}
return maxSum
}
let arr = [-11, 15, -9, -2, -3, -5, 8];
const checkArr = (/** @type {number[]} */ arr) => arr.every((/** @type {number} */ elem) => elem < 0);
/**
* @param {number[]} arr
*/
function getMaxSubSum(arr) {
let maxSum = 0;
let currentSum = 0;
if (checkArr(arr)) return 0;
for (let i = 0; i < arr.length; ++i) {
currentSum = Math.max(arr[i], currentSum + arr[i]);
maxSum = Math.max(currentSum, maxSum);
}
return maxSum;
}
console.log(getMaxSubSum(arr));