滑动窗口是一种常用的算法技巧,通常用于处理数组或列表中的连续子序列问题。使用for循环创建滑动窗口可以帮助我们高效地解决这类问题。下面是一个详细的解释和示例代码。
滑动窗口是一种动态维护子数组或子序列的方法。窗口的大小固定,但在数组或列表上滑动,以计算或检查每个可能的子序列。
以下是一个使用for循环创建固定大小滑动窗口的Python示例,用于找到数组中所有长度为k的子数组的最大值。
def max_sliding_window(nums, k):
if not nums:
return []
n = len(nums)
result = []
window = []
for i in range(n):
# 移除窗口外的元素
if window and window[0] <= i - k:
window.pop(0)
# 移除所有小于当前元素的值
while window and nums[window[-1]] <= nums[i]:
window.pop()
# 将当前元素的索引加入窗口
window.append(i)
# 当窗口大小达到k时,记录当前窗口的最大值
if i >= k - 1:
result.append(nums[window[0]])
return result
# 示例用法
nums = [1,3,-1,-3,5,3,6,7]
k = 3
print(max_sliding_window(nums, k)) # 输出: [3,3,5,5,6,7]
result
用于存储结果,window
用于维护当前窗口的最大值的索引。通过这种方式,你可以高效地使用for循环创建滑动窗口,并应用于各种实际问题中。
领取专属 10元无门槛券
手把手带您无忧上云