56 lines
1.0 KiB
Java
56 lines
1.0 KiB
Java
import java.util.Scanner;
|
||
|
||
/**
|
||
* Program to implement Kadane’s Algorithm to
|
||
* calculate maximum contiguous subarray sum of an array
|
||
* Time Complexity: O(n)
|
||
*
|
||
* @author Nishita Aggarwal
|
||
*
|
||
*/
|
||
|
||
public class KadaneAlgorithm {
|
||
|
||
/**
|
||
* This method implements Kadane's Algorithm
|
||
*
|
||
* @param arr The input array
|
||
* @return The maximum contiguous subarray sum of the array
|
||
*
|
||
*/
|
||
static int largestContiguousSum(int arr[]){
|
||
int i,len=arr.length,cursum=0,maxsum=Integer.MIN_VALUE;
|
||
if(len==0) //empty array
|
||
return 0;
|
||
for(i=0;i<len;i++){
|
||
cursum+=arr[i];
|
||
if(cursum>maxsum){
|
||
maxsum=cursum;
|
||
}
|
||
if(cursum<=0){
|
||
cursum=0;
|
||
}
|
||
}
|
||
return maxsum;
|
||
}
|
||
|
||
/**
|
||
* Main method
|
||
*
|
||
* @param args Command line arguments
|
||
*/
|
||
public static void main(String[] args) {
|
||
Scanner sc=new Scanner(System.in);
|
||
int n,arr[],i;
|
||
n=sc.nextInt();
|
||
arr=new int[n];
|
||
for(i=0;i<n;i++){
|
||
arr[i]=sc.nextInt();
|
||
}
|
||
int maxContSum=largestContiguousSum(arr);
|
||
System.out.println(maxContSum);
|
||
sc.close();
|
||
}
|
||
|
||
}
|