题目描述补充
题目:滑动窗口内数的和
给定一个整数数组 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));
码小课网站中有更多相关内容分享给大家学习,包括算法基础、数据结构、面试技巧等,欢迎访问码小课网站深入学习。