帮我用JAVA写一个滑动窗口算法
时间: 2024-05-10 20:20:04 浏览: 87
以下是一个使用Java编写的滑动窗口算法的示例代码:
```java
public class SlidingWindow {
public static int findMaxSum(int[] arr, int k) {
int maxSum = Integer.MIN_VALUE, windowSum = 0;
int windowStart = 0;
for (int windowEnd = 0; windowEnd < arr.length; windowEnd++) {
windowSum += arr[windowEnd];
if (windowEnd >= k - 1) {
maxSum = Math.max(maxSum, windowSum);
windowSum -= arr[windowStart];
windowStart++;
}
}
return maxSum;
}
public static void main(String[] args) {
int[] arr = {2, 1, 5, 1, 3, 2};
int k = 3;
int maxSum = findMaxSum(arr, k);
System.out.println("Maximum sum of a subarray of size " + k + " is " + maxSum);
}
}
```
这个算法将一个大小为k的窗口从左到右移动,每次向右移动一步,并计算窗口中元素的和。然后,它将窗口的起始位置向右移动一步,并从窗口的总和中减去第一个元素。该算法使用maxSum变量来跟踪找到的最大子数组的和,并在每次移动窗口时更新它。
阅读全文