Maximum Subarray Sum in Java using Kadane's Algorithm
Here, we are going to learn how to find the maximum subarray sum using Kadane's Algorithm in Java?
Problem Statement
Given an array with size N, write a Java program to find the maximum subarray sum using Kadane's Algorithm.
Example
Input: n = 5 arr[] = 1, 2, 3, -2, 5 Output: Maximum Subarray sum is: 9
What is Kadane's Algorithm
Kadane's Algorithm helps us to find the Maxumum Subarray Sum in time complexity of O(n).
Steps to Find Maximum Subarray Sum Using Kadane's Algorithm
- Initialize 2 variables named currentSum=Integer.MIN_VALUE and maxSum= 0.
- Iterate the array from index 0 to n-1.
- Add each indicie's value (arr[i]) to currentSum.
- Update the maxSum on each iteration Math.max(maxSum, currentSum).
- Check currentSum is less than Zero, if it is less than zero then assign currentSum = 0.
Here main point is to assign the currentSum to Zero because we are finding maximum sum and if sum becomes less than zero then there is no point to keep it below zero. We simply reset the currentSum to zerio then start with a new subarray.
Java Code to Find Maximum Subarray Sum Using Kadane's Algorithm
import java.util.Scanner; public class KadaneAlgo { static int FindMaxSubArraySum(int[] arr, int n) { int currentSum = 0, maxSum = Integer.MIN_VALUE; for (int i = 0; i < n; i++) { currentSum = Math.max(arr[i], currentSum + arr[i]); maxSum = Math.max(maxSum, currentSum); } return maxSum; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter the size of array: "); int n = sc.nextInt(); int[] arr = new int[n]; System.out.println("Enter " + n + " Array elements: "); for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } long maxSum = FindMaxSubArraySum(arr, n); System.out.println("Max Subarray Sum is: " + maxSum); } }
Output

Advertisements