滑动窗口练习:求一个数组中所有大小为K的连续子数组的平均值。用java编写
时间: 2024-02-13 16:07:50 浏览: 29
好的,可以使用滑动窗口来解决这个问题,以下是Java代码实现:
```
public static double[] findAverages(int K, int[] arr) {
double[] result = new double[arr.length - K + 1];
double windowSum = 0;
int windowStart = 0;
for (int windowEnd = 0; windowEnd < arr.length; windowEnd++) {
windowSum += arr[windowEnd];
if (windowEnd >= K - 1) {
result[windowStart] = windowSum / K;
windowSum -= arr[windowStart];
windowStart++;
}
}
return result;
}
```
使用示例:
```
int[] arr = { 1, 3, 2, 6, -1, 4, 1, 8, 2 };
int K = 5;
double[] result = findAverages(K, arr);
for (double d : result) {
System.out.print(d + " ");
}
```
输出结果为:
```
2.2 2.8 2.4 3.6 2.8
```
其中,结果数组`result`的长度为`arr.length - K + 1`,即为滑动窗口的数量,每个位置存储的是对应窗口内的平均值。`windowStart`和`windowEnd`分别表示当前窗口的起始和结束下标,`windowSum`表示当前窗口内的元素和。当窗口大小达到K时,计算窗口内的平均值并将结果存入数组中,同时将窗口左侧的元素移除,向右滑动窗口。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)