滑动窗口的C语言代码
时间: 2024-10-22 22:20:03 浏览: 56
滑动窗口是一种常见的数据结构和算法技巧,常用于处理数组或序列中特定子段的问题。下面是一个简单的例子,使用C语言实现了在一个数组中找到一个固定大小的滑动窗口里最大值的函数:
```c
#include <stdio.h>
int max_in_window(int* nums, int window_size, int n) {
if (window_size > n || !nums) return -1; // 窗口大小过大或数组无效
int window_start = 0;
int max_num = nums[0]; // 初始化窗口最大值
for (int i = 1; i <= n - window_size; i++) { // 遍历数组,移动窗口
max_num = MAX(max_num, nums[i]); // 更新窗口内的最大值
if (window_start == i) { // 如果窗口开始点移到了这里,移除最左边的元素
max_num = MAX(max_num, nums[i+1]);
window_start++;
}
}
return max_num;
}
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // 辅助宏定义,用于求较大的数
int main() {
int nums[] = {1, 3, -1, -3, 5, 3, 6, 7};
int window_size = 3;
int n = sizeof(nums) / sizeof(nums[0]);
int result = max_in_window(nums, window_size, n);
printf("Max value in the sliding window of size %d is: %d\n", window_size, result);
return 0;
}
```
这段代码首先检查窗口大小是否合理,然后初始化窗口开始点和最大值。接着遍历数组,每次移动窗口并更新最大值,同时删除已超出窗口范围的最小值。最后返回窗口内的最大值。
阅读全文
相关推荐















