解题思路:
1.  slidingWindowMin 函数:

这个函数用于寻找滑动窗口中的最小值。

外层循环 for (i = 0; i <= n - k; i++) 用于遍历数组中所有可能的滑动窗口起始位置。

内层循环 for (j = 0; j < k; j++) 用于在每个滑动窗口中寻找最小值。

每次找到最小值后,将其打印出来。

2.  main 函数:

 首先读取数组的长度 n 和滑动窗口的大小 k 。

 然后读取数组中的元素。

 最后调用 slidingWindowMin 函数来寻找并打印滑动窗口中的最小值。



注意事项:这个算法的时间复杂度是 O(n*k),其中 n 是数组的长度, k 是滑动窗口的大小。如果需要更高效的算法,可以考虑使用双端队列来优化,将时间复杂度降低到 O(n)。



参考代码:

#include <stdio.h>

#include <stdlib.h>

#include <limits.h>

// 寻找滑动窗口中的最小值

void slidingWindowMin(int arr[], int n, int k) {

    int i, j;

    for (i = 0; i <= n - k; i++) {

        int minVal = INT_MAX;

        for (j = 0; j < k; j++) {

            if (arr[i + j] < minVal) {

                minVal = arr[i + j];

            }

        }

        printf("%d ", minVal);

    }

}

int main() {

    int n, k;

    scanf("%d %d", &n, &k);

    int arr[n];

    for (int i = 0; i < n; i++) {

        scanf("%d", &arr[i]);

    }

    slidingWindowMin(arr, n, k);

    return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

帅H2430823027 1月前 回复TA
五星好评