|  | 
| 2 | 2 | 
 | 
| 3 | 3 | public class MaximumSubarraySum { | 
| 4 | 4 | 
 | 
| 5 |  | -// brute force approch - O(N^2) Time | O(1) Space | 
|  | 5 | +// brute force approch - O(N*k) Time | O(1) Space | 
| 6 | 6 | public static int maxSubarraySum(int[] arr, int k) { | 
| 7 | 7 | 
 | 
| 8 | 8 | int maxsum = Integer.MIN_VALUE; | 
| 9 | 9 | 
 | 
| 10 | 10 | for (int i = 0; i <= arr.length - k; i++) { | 
| 11 |  | -int currsum = 0; | 
|  | 11 | +int windowsum = 0; | 
| 12 | 12 | 
 | 
| 13 | 13 | for (int window = 0; window < k; window++) { | 
| 14 |  | -currsum += arr[i + window]; | 
|  | 14 | +windowsum += arr[i + window]; | 
| 15 | 15 | } | 
| 16 |  | -maxsum = Math.max(maxsum, currsum); | 
|  | 16 | +maxsum = Math.max(maxsum, windowsum); | 
|  | 17 | +} | 
|  | 18 | + | 
|  | 19 | +return maxsum; | 
|  | 20 | +} | 
|  | 21 | + | 
|  | 22 | +// O(N) Time | O(1) Space | 
|  | 23 | +public static int maxSubarraySum2(int[] arr, int k) { | 
|  | 24 | + | 
|  | 25 | +int maxsum = Integer.MIN_VALUE; | 
|  | 26 | +int head = 0, tail = k, n = arr.length; | 
|  | 27 | + | 
|  | 28 | +int windowSum = 0; | 
|  | 29 | +for (int i = 0; i < k; i++) { | 
|  | 30 | +windowSum += arr[i]; | 
|  | 31 | +} | 
|  | 32 | +maxsum = Math.max(maxsum, windowSum); | 
|  | 33 | + | 
|  | 34 | +for (int slide = 1; slide <= n - k; slide++) { | 
|  | 35 | + | 
|  | 36 | +if (head < n && tail < n) { | 
|  | 37 | +windowSum -= arr[head]; | 
|  | 38 | +windowSum += arr[tail]; | 
|  | 39 | +head++; | 
|  | 40 | +tail++; | 
|  | 41 | +} | 
|  | 42 | +maxsum = Math.max(maxsum, windowSum); | 
| 17 | 43 | } | 
| 18 | 44 | 
 | 
| 19 | 45 | return maxsum; | 
| 20 | 46 | } | 
| 21 | 47 | 
 | 
| 22 | 48 | public static void main(String[] args) { | 
| 23 | 49 | int[] arr = { 1, 4, 2, 10, 23, 3, 1, 0, 20 }; | 
|  | 50 | +// int[] arr = { 100, 200, 300, 400 }; | 
| 24 | 51 | int windowSize = 4; | 
|  | 52 | + | 
| 25 | 53 | System.out.println(maxSubarraySum(arr, windowSize)); | 
|  | 54 | +System.out.println(maxSubarraySum2(arr, windowSize)); | 
| 26 | 55 | } | 
| 27 | 56 | } | 
0 commit comments