C语言写一段滑动窗口检测代码
时间: 2024-09-09 19:04:44 浏览: 58
滑动窗口算法通常用于处理数据流或者数组中的一段连续元素的问题,例如找到数组中的连续子数组的最大值、平均数等。这里是一个简单的C语言示例,它实现了在一个整型数组中找到最大子数组和的滑动窗口问题:
```c
#include <stdio.h>
// 函数声明
int maxSubArray(int* nums, int size, int windowSize);
int main() {
int nums[] = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
int n = sizeof(nums) / sizeof(nums[0]);
int windowSize = 3;
int result = maxSubArray(nums, n, windowSize);
printf("Max subarray sum in a window of size %d is: %d\n", windowSize, result);
return 0;
}
// 滑动窗口函数,使用Kadane's Algorithm
int maxSubArray(int* nums, int size, int windowSize) {
int currentSum = 0;
int maxSoFar = nums[0];
for (int i = 0; i < windowSize; i++) {
currentSum += nums[i];
}
maxSoFar = currentSum;
// 使用滑动窗口遍历数组
for (int i = windowSize; i < size; i++) {
currentSum += nums[i] - nums[i - windowSize]; // 更新当前窗口的和
maxSoFar = max(maxSoFar, currentSum); // 保持当前窗口内最大和
}
return maxSoFar;
}
```
在这个例子中,`maxSubArray`函数接收一个整型数组`nums`,数组长度`size`以及窗口大小`windowSize`作为参数。它首先计算初始窗口内的和,然后通过不断将右端点向右移动并更新窗口和,同时记录下所有窗口内最大的和。
阅读全文