python滑动窗口算法
时间: 2023-09-16 20:13:06 浏览: 131
Python的滑动窗口算法可以用来解决很多实际问题,例如字符串匹配、子数组求和等问题。下面是一个示例代码:
```python
def sliding_window(nums, k):
"""
滑动窗口算法
nums: 数组
k: 窗口大小
"""
n = len(nums)
if n < k:
return []
# 初始化窗口
window = []
for i in range(k):
window.append(nums[i])
res = [sum(window)]
# 滑动窗口
for i in range(k, n):
# 移除窗口最左侧的元素
window.pop(0)
# 添加新的元素
window.append(nums[i])
res.append(sum(window))
return res
```
这个函数接收两个参数,一个是数组nums,另一个是窗口大小k。函数首先检查数组长度是否小于k,如果是,则返回空数组。然后初始化一个大小为k的窗口,将窗口内的元素求和作为第一个结果。接下来,从第k个元素开始遍历数组,每次移除窗口最左侧的元素,添加新的元素,再求和并添加到结果数组中。最后返回结果数组。
这里是一个示例使用:
```python
nums = [1, 3, -1, -3, 5, 3, 6, 7]
k = 3
res = sliding_window(nums, k)
print(res) # [3, -1, 1, 7, 11, 16]
```
这个示例中,数组nums为[1, 3, -1, -3, 5, 3, 6, 7],窗口大小为3。函数的输出结果为[3, -1, 1, 7, 11, 16],表示每个窗口内的元素和。
阅读全文