Maximum Subarray - Kadane's Algorithm

September 15, 2019 by Sandeep Bhardwaj | Tags:


Maximum Subarray - Kadane's Algorithm

/**
 * 53. Maximum Subarray - Kadane's Algorithm
 * <p>
 * Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum
 * and return its sum.
 * <p>
 * Example:
 * <p>
 * Input: [-2,1,-3,4,-1,2,1,-5,4],
 * Output: 6
 * Explanation: [4,-1,2,1] has the largest sum = 6.
 * Follow up:
 * <p>
 * If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach,
 * which is more subtle.
 */
public class MaximumSubarray {
	public int maxSubArray(int[] nums) {
		int max_so_far = nums[0];
		int max_ending_here = nums[0];

		for (int i = 1; i < nums.length; i++) {
			max_ending_here = Math.max(max_ending_here + nums[i], nums[i]);

			max_so_far = Math.max(max_so_far, max_ending_here);

		}
		return max_so_far;
	}
}