Maximum Subarray Sum (Kadane’s Algorithm)?
int MaxSubArray(int[] nums)
int maxSoFar = nums[0];
int maxEndingHere = nums[0];
for (int i = 1; i < nums.Length; i++)
maxEndingHere = Math.Max(nums[i], maxEndingHere + nums[i]);
maxSoFar = Math.Max(maxSoFar, maxEndingHere);
return maxSoFar;
Explanation:
Track max subarray ending at current position; update global max.