You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于滑动窗口算法计算k大小子数组和及算法有效性验证

代码有效性判断与分析

这段JavaScript代码属于有效的滑动窗口算法,但实现细节存在可优化空间,具体分析如下:

核心逻辑符合滑动窗口要求

滑动窗口算法的核心是复用前一个窗口的计算结果,仅通过调整窗口两端的元素得到新窗口的和,将时间复杂度从暴力法的O(n*k)优化为O(n)。这段代码完全遵循了该思路:

  1. 先计算第一个长度为k的子数组和,作为初始窗口值currentSubArray;
  2. 每次滑动窗口时,减去移出窗口的左侧元素arr[i],加上新进入窗口的右侧元素arr[i+k],快速得到新窗口的和;
  3. 累加所有窗口的和得到最终结果。

可优化的实现细节

代码中sum的累加逻辑存在冗余计算:

sum += currentSubArray - arr[i] + arr[i+k];
currentSubArray = currentSubArray - arr[i] + arr[i+k];

这里重复计算了currentSubArray - arr[i] + arr[i+k],可以优化为先更新currentSubArray,再将其累加到sum中,让代码更简洁高效:

currentSubArray = currentSubArray - arr[i] + arr[i+k];
sum += currentSubArray;

结果验证

对于输入数组[1,2,3,4,5]和k=3,所有长度为3的子数组和分别为6、9、12,总和为27,这段代码最终输出结果与预期一致。

内容的提问来源于stack exchange,提问作者Alekam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:13:32