欢迎光临
我们一直在努力

滑动窗口

"""
滑动窗口
给定一个整数数组,有一个大小为x的滑动窗口。
窗口从数组的最左侧移动到数组的最右侧,
滑动窗口每次只向右移动一位,
返回滑动窗口中每次的最大值。
"""

def sliding_window(nums, x):
    """
    计算给定数组中每个长度为x的滑动窗口中的最大值。

    参数:
    nums: 列表,输入的整数数组。
    x: 整数,滑动窗口的长度。

    返回:
    列表,每个滑动窗口中的最大值组成的数组。
    """
    # 初始化数组长度
    length = len(nums)
    # 初始化前缀和数组,用于存储从窗口开始到当前位置的最大值
    prefix = [0] * length
    # 初始化后缀和数组,用于存储从当前位置到窗口结束的最大值
    suffix = [0] * length
    # 遍历数组,填充前缀和数组
    for i in range(length):
        # 如果当前位置是窗口的起始位置,则直接取当前位置的值
        if i % x == 0:
            prefix[i] = nums[i]
        # 否则,取当前位置和前一个位置的最大值
        else:
            prefix[i] = max(prefix[i - 1], nums[i])
    # 遍历数组,填充后缀和数组
    for i in range(length - 1, -1, -1):
        # 如果当前位置是窗口的结束位置,则直接取当前位置的值
        if i == length - 1 or (i + 1) % x == 0:
            suffix[i] = nums[i]
        # 否则,取当前位置和后一个位置的最大值
        else:
            suffix[i] = max(suffix[i + 1], nums[i])
    # 计算每个滑动窗口的最大值,即前缀和和后缀和的最大值
    result = [max(suffix[i], prefix[i + x - 1]) for i in range(length - x + 1)]
    # 返回结果数组
    return result

# 调用函数并打印结果
print(sliding_window([0, -1, 2, -3, 4, -9, 8, -7, 6, -5], 3))
赞(0) 打赏
未经允许不得转载:创想未来 » 滑动窗口

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册