Max Subarray
Max Subarray
BRUTE FORCE
import java.util.*;
public class Javabasics{
public static void max_sum(int A[]){
int large=Integer.MIN_VALUE;
int start,end,sum=0;
for(int i=0;i<A.length;i++){
start=i;
for(int j=i;j<A.length;j++){
end=j;
for(int k=start;k<=end;k++){ //tc = big_o(n^3)
sum+=A[k];
}
if(sum>large){
large=sum;
}
sum=0;
}
}
System.out.println(large);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int A[] = new int[5];
for(int i=0;i<A.length;i++){
A[i]=sc.nextInt();
}
max_sum(A);
}
}
PREFIX SUM
import java.util.*;
public class Javabasics{
public static void max_sum(int A[],int P[]){
int large=Integer.MIN_VALUE;
int start,end,sum=0;
for(int i=0;i<A.length;i++){
start=i;
for(int j=i;j<A.length;j++){
end=j;
sum=(start==0)? P[end] : P[end]-P[start-1]; //tc = big_o(n^
2);
if(sum>large){
large=sum;
}
}
}
System.out.println(large);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int A[] = new int[5];
int P[] = new int[A.length];
for(int i=0;i<A.length;i++){
A[i]=sc.nextInt();
}
P[0]=A[0];
for(int i=1;i<P.length;i++){
P[i]=P[i-1]+A[i];
}
max_sum(A,P);
}
}
KADANES ALGORITHM
import java.util.*;
public class Javabasics{
public static void max_sum(int A[]){
int sum=0;
int large = Integer.MIN_VALUE;
for(int i=0;i<A.length;i++){
sum+=A[i];
if(sum<0){ //tc =
big_o(n);
sum=0;
}
if(sum>large){
large=sum;
}
}
System.out.println(large);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int A[] = new int[5];
for(int i=0;i<A.length;i++){
A[i]=sc.nextInt();
}
max_sum(A);
}
}