当前位置: 面试刷题>> 滑动窗口内数的和 (经典算法题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 代码示例
```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 代码示例
```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 代码示例
```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));
```
**码小课网站中有更多相关内容分享给大家学习**,包括算法基础、数据结构、面试技巧等,欢迎访问码小课网站深入学习。