C 语言滑动窗口技术17 Mar 2025 | 4 分钟阅读 循环几乎是每个复杂问题的一部分。过多的循环/嵌套循环会增加所需的时间,从而增加程序的时间复杂度。滑动窗口技术是一种计算技术,通过用单个循环替换嵌套循环来减少程序中使用的嵌套循环的数量,从而提高程序的效率。 如果您熟悉计算机网络中的滑动窗口协议,这种技术是相似的。本教程将通过不同的示例解释如何使用此技术。 通常,当我们使用这样的嵌套循环时 迭代 外层循环执行 n 次;每次外层循环执行时,内层循环都会执行 (k-i) 次。执行整个循环所需的平均时间大约是 O(N2)。因此,开发人员不建议使用循环。 让我们举一个例子来清楚地理解这个概念 假设我们需要找到数组中 'k' 个连续元素的最大和。用户将提供 k 的值。 首先,如果我们使用朴素方法,对于数组中的每个元素 i,我们将从 i + 1 迭代数组直到 n - 1,其中 n 是数组的大小。我们需要对每个元素执行此操作并比较和以获得最大和。 朴素暴力方法输出 Enter the size of the array: 7 Enter the elements of the array: 9 2 7 9 4 2 8 Enter the size of the sub-array: 3 The maximum sum of 3 consecutive elements of the array: 20 现在,滑动窗口技术来了 这里的概念是,我们创建一个大小为 k 的窗口,并将其以一个单位索引滑动。这里,窗口不是任何技术术语。我们不是像在循环中那样使用单个值,而是在每次迭代中同时使用多个元素。 例如 给定一个大小为 10 的数组 假设我们需要 3 个连续索引的最大和,创建一个 3 大小的窗口,并在整个数组中滑动(遍历)它。这是一个图示 第一次迭代 ![]() 第二次迭代 ![]() 第三次迭代 ![]() 第 4 次迭代 ![]() 迭代 5 ![]() 第 6 次迭代 ![]() 第 7 次迭代 ![]() 第 8 次迭代 ![]()
这是代码 输出 Enter the size of the array: 10 Enter the elements: 8 2 1 7 3 2 5 8 1 3 Enter the value of k: 3 The maximum sum of 3 consecutive elements in the array: 15
以下是将该技术应用于任何问题的步骤
|
简介 标记对 C 编程语言的语法和组织有着根本性的影响。标记是构成代码的基本构件,代表 C 编程语言中的不同含义。它们包括预处理器指令、关键字、标识符、常量、运算符和标点符号。在本节中,我们将探讨 C 语言标记的种类...
阅读 4 分钟
引言:在编程世界中,库是最重要和最有用的工具之一。它们是预先编写的代码片段,可用于执行特定任务,例如排序或搜索数据,而无需从头开始编写代码。C...
7 分钟阅读
C语言中逗号运算符的符号是.。在C语言中,逗号运算符的优先级最低。在C语言中,逗号运算符保证了两个或多个表达式从左到右依次求值,其中最右边表达式的值用作...
阅读 3 分钟
在 C 编程中,阿姆斯特朗数是指其反转的平方等于该数字平方的反转的数字。更正式地说,阿姆斯特朗数是一个正整数“n”,使得:n^2 = reverse(reverse(n)^2),其中“^”表示幂运算符……
阅读 4 分钟
基于矩阵的数学问题解决方法需要大量的计算工作,如果稍有差错,用户就无法得到期望的答案。你需要为每一行和每一列输入所需的组件。仅仅输入每个... 的数据是不够的。
21 分钟阅读
引言:字符串是编程的重要组成部分,因为它们使得与用户通信、显示结果和读取文件成为可能。它们是一种数据输入和输出机制。由于字符串在我们创建的程序中始终以某种方式使用,因此高效处理...
阅读 3 分钟
?在 C 编程语言中,short int 是一种用于存储整数值的数据类型。它是一种类型修饰符,可与 int 数据类型一起使用以创建较小的整数变量,使用的内存比常规 int 少。short int 数据类型...
5 分钟阅读
在本主题中,我们将讨论 C 编程语言中的静态函数。默认情况下,每个函数都声明为全局函数,可以在程序内的任何位置访问。`static` 关键字用于函数名之前,以将任何函数设为静态...
阅读 4 分钟
如果列表中的内容按顺序排列,则将项目分成两部分,两侧具有相等数量的项目,这称为中位数。偶数个项目有两个中间值,而奇数个项目有一个...
5 分钟阅读
板球比分表项目是一个简单的 C 语言编程应用程序。它使用文件管理来存储诸如得分、失误、回合和额外项等数据。该程序可以显示得分、失误、击球手和投球手姓名、回合、奖励、投球手的经济率、击球手的击球率以及其他...
阅读 31 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India