当前位置: 面试刷题>> 滑动窗口内数的和 (经典算法题500道)


题目描述补充

题目:滑动窗口内数的和

给定一个整数数组 nums 和一个整数 k,要求编写一个函数来计算数组 nums 中每个长度为 k 的连续子数组(滑动窗口)的元素和。

示例

  • 输入:nums = [1,2,3,4,5]k = 3
  • 输出:[6, 9, 12] 解释:
    • 第一个窗口 [1,2,3],和为 6
    • 第二个窗口 [2,3,4],和为 9
    • 第三个窗口 [3,4,5],和为 12

PHP 代码示例

function slidingWindowSum($nums, $k) {
    $n = count($nums);
    $windowSum = array_sum(array_slice($nums, 0, $k)); // 初始化窗口和
    $result = [$windowSum]; // 存储结果

    for ($i = $k; $i < $n; $i++) {
        // 减去窗口最左边的元素,并加上新进入窗口的元素
        $windowSum = $windowSum - $nums[$i - $k] + $nums[$i];
        $result[] = $windowSum;
    }

    return $result;
}

// 示例
$nums = [1,2,3,4,5];
$k = 3;
print_r(slidingWindowSum($nums, $k));

Python 代码示例

def sliding_window_sum(nums, k):
    window_sum = sum(nums[:k])  # 初始化窗口和
    result = [window_sum]  # 存储结果

    for i in range(k, len(nums)):
        # 减去窗口最左边的元素,并加上新进入窗口的元素
        window_sum = window_sum - nums[i - k] + nums[i]
        result.append(window_sum)

    return result

# 示例
nums = [1, 2, 3, 4, 5]
k = 3
print(sliding_window_sum(nums, k))

JavaScript 代码示例

function slidingWindowSum(nums, k) {
    let windowSum = nums.slice(0, k).reduce((a, b) => a + b, 0); // 初始化窗口和
    let result = [windowSum]; // 存储结果

    for (let i = k; i < nums.length; i++) {
        // 减去窗口最左边的元素,并加上新进入窗口的元素
        windowSum = windowSum - nums[i - k] + nums[i];
        result.push(windowSum);
    }

    return result;
}

// 示例
const nums = [1, 2, 3, 4, 5];
const k = 3;
console.log(slidingWindowSum(nums, k));

码小课网站中有更多相关内容分享给大家学习,包括算法基础、数据结构、面试技巧等,欢迎访问码小课网站深入学习。

推荐面试题