Saturday 28 August 2021

Sliding Window In Java - Maximum sum of contigous sub array of size k

public static void main(String[] args) {
int[] arr = {5,2,1,7,4,9};
int k = 3;
int n = arr.length;
//brute force O(N*K)
/**
* 5+2+1=8
* 2+1+7=10
* 1+7+4=12
* 7+4+9=20
*/
int sum = 0;
for(int i=0;i<=n-k;i++) {
int s = 0;
for(int j=i;j< (i+k); j++) {
s += arr[j];
}
sum = s > sum ? s : sum;
}
System.out.println("" + sum);//20
//smart O(N)
/**>>>> 5,2,1,7,4,9
* 5+2+1=8
* add 7(next), minus 1 (first)
* add 4 minus 2
* add 9 minus 1
*/
int win = 0, max = 0;
for(int i=0;i win += arr[i];
}
for(int i=k;i win = win + arr[i] - arr[i-k];
max = win > max ? win : max;
}
System.out.println("max " + max);//20
}

No comments:

Post a Comment