滑动窗口练习,求一个数组中所有大小为k的连续子数组的平均值Java
时间: 2024-05-12 22:15:05 浏览: 119
可以使用滑动窗口来解决这个问题。我们可以使用两个指针 `left` 和 `right` 来表示当前子数组的左右边界,然后计算当前子数组的平均值并记录下来,然后将左指针向右移动一位,右指针也向右移动一位,继续计算下一个子数组的平均值,直到右指针到达数组的末尾为止。
以下是Java代码实现:
```java
public static double[] findAverages(int k, int[] arr) {
double[] result = new double[arr.length - k + 1];
int windowSum = 0;
int windowStart = 0;
for (int windowEnd = 0; windowEnd < arr.length; windowEnd++) {
windowSum += arr[windowEnd];
if (windowEnd >= k - 1) {
result[windowStart] = windowSum / (double) k;
windowSum -= arr[windowStart];
windowStart++;
}
}
return result;
}
```
其中,`k` 表示子数组的大小,`arr` 表示原始数组。函数返回一个包含所有子数组平均值的数组 `result`。
通过循环遍历数组,我们可以计算每个子数组的和。当右指针到达 `k - 1` 时,我们可以计算当前子数组的平均值,并将其存储在 `result` 数组中。然后将左指针向右移动一位,右指针也向右移动一位,继续计算下一个子数组的平均值。最后返回 `result` 数组即可。
阅读全文