Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
与你交谈系列#2_创想鸟

与你交谈系列#2

介绍

今天我们将开始概述用于解决各种算法问题的概念。对某个概念的理解可能会给你一个直觉,从哪个角度开始思考潜在的解决方案。

有不同但没有太多的概念。今天我将把你的注意力集中在滑动窗口概念上。

滑动窗口

与你交谈系列#2

滑动窗口的概念比乍一看要复杂一些。我将通过实际例子来证明这一点。现在,请记住,概念性的想法是我们将有一些必须移动的窗口。让我们立即从示例开始吧。

假设您有一个整数数组和预定义的子数组大小。你被要求找到这样一个子数组(又名窗口),其值的总和将是最大的。

array = [1, 2, 3]window_size = 2# conceptuallysubarray_1 = [1, 2] --> sum 3subarray_2 = [2, 3] --> sum 5maximum_sum = 5

嗯,看起来很简单:
(1) 尺寸为 2 的滑动窗
(2) 2 个子数组
(3) 计算每一项的总和(4) 找出它们之间的最大值

让我们实现它吧。

def foo(array: list[int], size: int) -> int:    maximum = float("-inf")    for idx in range(size, len(array)+1):        left, right = idx-size, idx        window = array[left:right]        maximum = max(maximum, sum(window))    return maximum 

嗯,看来我们刚刚有效地使用了滑动窗口的概念。事实上,不完全是。通过了解解决方案的时间复杂度,我们可以得到“证明”。

复杂度为 o(l)*o(w),其中 l 是数组中窗口的数量,w 是窗口中元素的数量。换句话说,我们需要遍历l个窗口,对于每个第l个窗口,我们需要计算w个元素的总和。

这里有什么问题吗?让我们概念性地描述回答问题的迭代。

array = [1, 2, 3, 4]window_size = 3iterations1 2 3 4 5|___|  |___|    |___|  

答案是,即使我们滑动数组,在每次迭代中我们都需要“重新计算”在上一次迭代中已经计算过的 k-1 个元素。

基本上,这种见解应该建议我们提出一个问题:

“有没有办法利用上一步的计算?”

答案是肯定的。我们可以通过将窗口元素的第一个和下一个元素相加和相减来得到窗口元素的总和。让我把这个想法写入代码中。

def foo(array: List[int] = None, size: int = 0) -> int    window_start, max_, window_sum_ = 0, float("-inf"), 0    for window_end in range(len(array)):        if window_end > size - 1:            window_sum_ -= array[window_start]            window_start += 1        window_sum_ += array[window_end]        max_ = max(max_, window_sum_)    return max_assert foo(array=[1, 2, 3, 4], size=3) == 9

在这里我们可能会看到,当我们构造长度为 size 的子数组时,我们开始从窗口总和中减去第一个元素,这使得我们可以重用上一步的计算。

现在,我们可以说我们有效地利用了滑动窗口的概念,同时我们得到了检查时间复杂度的证明,时间复杂度从 o(l*w) 减少到 o(l),其中 l 是我们将滑动的窗口数量。

我想强调的主要思想,滑动窗口概念不仅仅是用特定大小的窗口来切片可迭代对象。

让我给你一些问题,我们将学习如何检测问题可能涉及滑动窗口概念以及你到底可以对窗口本身做什么。

问题概述

由于我在这里只讨论概念,因此我会跳过“如何计算窗口内的某些内容”。

问题一

给定一个数组,求其中所有大小为 k 的连续子数组的平均值。

滑动窗口? -连续子数组第一个关键字,这意味着我们应该照顾窗口,它代表一个连续的子数组。我们知道滑动窗口的大小吗? – 是的,k,我们得到了窗口的大小,它应该是 k 的长度。我们到底应该在滑动窗口内管理/检查什么? – 找出…的平均值好,现在我们可以这样定义该方法:使用大小为 k 的窗口迭代输入数组。在每次迭代中计算窗口的平均值…

问题二

给定一个正数数组和一个正数 k,找到大小为 k 的任何连续子数组的最大和。

滑动窗口? – 再次连续子数组,第一个关键字,这意味着我们应该处理窗口,它代表一个连续子数组。我们知道滑动窗口的大小吗? – 是的,k,我们得到了窗口的大小,它应该是 k 的长度。我们到底应该在滑动窗口内管理/检查什么? – .. 总和 …现在:使用大小为 k 的窗口遍历输入数组。在每次迭代中计算窗口的总和…

问题三

给定一个正数数组和一个正数 s,找到总和大于或等于 s 的最小连续子数组的长度。

滑动窗口? – 再次连续子数组,第一个关键字,这意味着我们应该处理窗口,它代表一个连续子数组。我们知道滑动窗口的大小吗? – 其实不,我们需要弄清楚。我们到底应该在滑动窗口内管理/检查什么? – …总和是 >= 到 s …现在,我们可以这样定义该方法:“首先,迭代输入数组并构造这样的第一个窗口,它将满足条件(总和为 >= 到 s)。完成后,移动窗口,管理窗口开始和结束…”

问题四

给定一个字符串,找到其中不超过 k 个不同字符的最长子字符串的长度。

滑动窗口? – 最长的子串,第一个关键字,这意味着我们应该照顾代表子串的窗口。我们知道滑动窗口的大小吗? – 不,我们需要弄清楚。我们到底应该在滑动窗口内管理/检查什么? – …不同字符的数量…这里的方法有点复杂,所以我在这里跳过。

问题五

给定一个整数数组,其中每个整数代表一棵果树,给你两个篮子,你的目标是在每个篮子里放入最大数量的水果。唯一的限制是每个篮子只能放一种水果。

你可以从任何一棵树开始,但一旦开始你就不能跳过一棵树。您将从每棵树上采摘一种水果,直到您无法采摘为止,也就是说,当您必须从第三种水果中采摘时,您将停止。
编写一个函数来返回两个篮子中水果的最大数量。

好像不是那么明显,我们先简化一下条件。

有一个输入数组。数组可能仅包含 2 个不同的数字(桶)。要求你找到长度最大的连续子数组。

现在更容易看出我们可能会使用滑动窗口概念。

滑动窗口? – 连续子数组我们知道滑动窗口的大小吗? – 不,我们需要弄清楚。我们到底应该在滑动窗口内管理/检查什么? – …数字是否不同以及窗口的长度…问题六

给定一个字符串和一个模式,找出该字符串是否包含该模式的任何排列。

首先,我们有 2 个字符串,原始字符串和模式字符串。我们知道我们已经以某种方式比较了原始和模式,这导致了这个想法,我们需要构建模式大小的窗口并进一步执行排列检查。这意味着,我们可以使用滑动窗口概念。

尾奏

当您处理滑动窗口时,请记住以下问题:

你了解窗户的尺寸吗你知道如何建造窗户吗你知道如何移动/缩小窗口吗你了解什么是有效/无效窗口吗你知道如何让无效窗口变成有效窗口吗

以上就是与你交谈系列#2的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1348102.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
字符串和尾随逗号,耦合并成为,Tuple ():将错误复制并粘贴到错误和概念
上一篇 2025年12月13日 11:44:42
使用 PyTorch、NumPy、NLTK 和 Nextjs 构建全栈聊天机器人 – 4 小时完整教程
下一篇 2025年12月13日 11:44:54

相关推荐

  • ChatGPT能否设计用户问卷 ChatGPT调研工具自动生成方案

    ChatGPT能否设计用户问卷 ChatGPT调研工具自动生成方案ChatGPT能否设计用户问卷 ChatGPT调研工具自动生成方案ChatGPT能否设计用户问卷 ChatGPT调研工具自动生成方案ChatGPT能否设计用户问卷 ChatGPT调研工具自动生成方案

    ChatGPT完全具备辅助设计用户问卷的能力。通过向其提供清晰的指令,可以高效地生成结构合理、问题多样的调研问卷。本文将详细讲解如何利用ChatGPT来自动生成一份完整的用户问卷,从明确调研目的开始,到逐步迭代优化问题,最终形成可用的问卷方案,帮助您掌握具体的操作流程。 ☞☞☞AI 智能聊天, 问答…

    2026年9月30日 • 用户投稿
    100
  • 123网盘如何快速搜索查找文件_123网盘文件快速搜索技巧

    123网盘如何快速搜索查找文件_123网盘文件快速搜索技巧123网盘如何快速搜索查找文件_123网盘文件快速搜索技巧123网盘如何快速搜索查找文件_123网盘文件快速搜索技巧123网盘如何快速搜索查找文件_123网盘文件快速搜索技巧

    123云盘高效搜索方法包括:使用关键词精准查找,按文件类型和时间筛选缩小范围,为高频文件添加标签以便快速定位,以及查看“最近使用”记录回溯近期文件。 在123网盘文件越来越多的情况下,掌握高效的搜索方法能省下大量翻找的时间。直接用好系统自带的功能,就能快速定位目标文件。 使用关键词精准搜索 打开12…

    2026年9月30日 • 用户投稿
    000
  • 在手机淘宝装修的时候千万不能做的禁忌你知道吗?

    在手机淘宝装修的时候千万不能做的禁忌你知道吗?在手机淘宝装修的时候千万不能做的禁忌你知道吗?在手机淘宝装修的时候千万不能做的禁忌你知道吗?在手机淘宝装修的时候千万不能做的禁忌你知道吗?

    避免图片动画过多、信息堆砌、布局错乱、滥用分享与音乐、使用无版权素材,确保手机淘宝店铺加载流畅、视觉清晰、操作便捷,提升用户体验与转化率。 如果您在手机淘宝上进行店铺装修,却发现页面加载缓慢或用户流失严重,很可能是触碰了某些常见的设计禁忌。这些问题会直接影响用户体验和店铺转化率。 本文运行环境:iP…

    2026年9月30日 • 用户投稿
    400
  • 如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构

    如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构

    RAID阵列因磁盘故障或配置丢失导致无法访问时,数据仍可能恢复。首先可使用R-Studio等专业软件扫描磁盘,自动推断RAID级别、条带大小和磁盘顺序,构建虚拟阵列提取数据;若已知部分配置信息,可通过手动设置参数提高重建准确性;对于Linux软RAID,可用dd命令备份磁盘后,结合mdadm工具在相…

    2026年9月30日 • 用户投稿
    100
  • iPhone语音备忘录不见了?苹果手机备忘录恢复办法分享

    iPhone语音备忘录不见了?苹果手机备忘录恢复办法分享iPhone语音备忘录不见了?苹果手机备忘录恢复办法分享iPhone语音备忘录不见了?苹果手机备忘录恢复办法分享iPhone语音备忘录不见了?苹果手机备忘录恢复办法分享

    与文字、图片一样,有时候我们也会在iphone语音备忘录里面储存重要的信息。然而,当打开iphone语音备忘录,竟发现之前储存的语音备忘录不见了!iphone录音备忘录不见了该怎么应对呢?小编今天就教大家几种iphone语音备忘录恢复的办法,让你的困扰「一扫而空」! 一:检查最近删除文件夹 iPho…

    2026年9月30日 • 用户投稿
    100
  • Java实现随机大小写字母组合生成教程

    Java实现随机大小写字母组合生成教程Java实现随机大小写字母组合生成教程Java实现随机大小写字母组合生成教程Java实现随机大小写字母组合生成教程

    本教程详细介绍了如何在Java中利用Math.random()方法生成指定数量的随机大小写拉丁字母组合。文章将深入解析字符生成原理,包括如何通过ASCII码和随机数映射来获取大写和小写字母,并提供清晰的示例代码和关键注意事项,帮助开发者高效实现字母组合的随机生成功能。 1. 理解随机字符生成原理 在…

    2026年9月30日 • 用户投稿
    100
  • qq浏览器怎么取消固定标签页_QQ浏览器取消标签页固定操作

    qq浏览器怎么取消固定标签页_QQ浏览器取消标签页固定操作qq浏览器怎么取消固定标签页_QQ浏览器取消标签页固定操作qq浏览器怎么取消固定标签页_QQ浏览器取消标签页固定操作qq浏览器怎么取消固定标签页_QQ浏览器取消标签页固定操作

    1、可通过右键菜单选择“取消固定”来解除QQ浏览器中已固定的标签页;2、也可直接拖动固定标签页脱离原位以取消固定;3、还可通过设置中的启动项管理批量调整固定标签,实现灵活浏览。 如果您在使用QQ浏览器时将某些标签页固定,但后续希望取消固定以便更灵活地管理浏览窗口,可以按照以下方法操作。这些步骤将帮助…

    2026年9月30日 • 用户投稿
    200
  • ​Windows 11 任务栏新添 AI 助手 “Taskbar Companion”

    ​Windows 11 任务栏新添 AI 助手 “Taskbar Companion”​Windows 11 任务栏新添 AI 助手 “Taskbar Companion”​Windows 11 任务栏新添 AI 助手 “Taskbar Companion”​Windows 11 任务栏新添 AI 助手 “Taskbar Companion”

    微软公司正深入测试 Windows 11 任务栏的一项全新功能,代号为“Taskbar Companion”(任务栏伴侣)的 AI 助手逐渐进入公众视野,引发广泛关注。该功能的目标是提升用户与智能助手及各类智能体之间的交互效率。数周以来,关于这一实验性模块的消息陆续曝光,最近又出现了新的技术线索,进…

    2026年9月30日 • 用户投稿
    200
  • 巴别塔圣歌第一章怎么过 第一章通关详细流程攻略

    巴别塔圣歌第一章怎么过 第一章通关详细流程攻略巴别塔圣歌第一章怎么过 第一章通关详细流程攻略巴别塔圣歌第一章怎么过 第一章通关详细流程攻略巴别塔圣歌第一章怎么过 第一章通关详细流程攻略

    游戏初始,主角在时间的流转中缓缓醒来,此时需向下滑动屏幕寻找隐藏的楼梯。攀爬而上后会发现一处破损的墙体,穿过缺口便抵达一扇紧闭的大门前。门侧设有机关与神秘符号,必须先解开谜题开启大门才能继续前行。进入门后,前方被水道隔断,需仔细检查附近的水阀装置,并依照特定顺序进行操作,以疏通下水道障碍。 探索途中…

    2026年9月30日 • 用户投稿
    000
  • SQL查询中JOIN、WHERE和ORDER BY子句的正确使用与顺序

    本文详细阐述了在SQL查询中同时使用JOIN、WHERE和ORDER BY子句的正确方法。重点介绍了JOIN子句中ON条件的精确放置,强调每个JOIN操作后应立即跟上其对应的ON条件。此外,文章还明确了WHERE子句必须位于ORDER BY子句之前,以确保数据先被筛选再进行排序。通过示例代码和注意事…

    2026年9月29日
    200
  • OPPO Find X9系列外观公布:告别圆形“奥利奥”模组

    OPPO Find X9系列外观公布:告别圆形“奥利奥”模组OPPO Find X9系列外观公布:告别圆形“奥利奥”模组OPPO Find X9系列外观公布:告别圆形“奥利奥”模组OPPO Find X9系列外观公布:告别圆形“奥利奥”模组

    今天,oppo官方通过其微博平台首次揭晓了oppo find x9系列的外观设计细节。 从发布的宣传海报可以看出,Find X9系列摒弃了自Find X6以来一直沿用的圆形“奥利奥”镜头模组设计,转而采用左上角布局的圆角矩形相机模块,整体风格更为方正且富有现代感。 在具体配置方面,Find X9标准…

    2026年9月29日 • 用户投稿
    100
  • 漫蛙(manwa2)全集漫画网站 漫蛙manwa2官网直连地址链接分享

    漫蛙(manwa2)全集漫画网站 漫蛙manwa2官网直连地址链接分享漫蛙(manwa2)全集漫画网站 漫蛙manwa2官网直连地址链接分享漫蛙(manwa2)全集漫画网站 漫蛙manwa2官网直连地址链接分享漫蛙(manwa2)全集漫画网站 漫蛙manwa2官网直连地址链接分享

    许多漫画爱好者正在寻找漫蛙(manwa2)全集漫画网站的直连地址,本文将为您分享最新的官网入口链接,并详细介绍这个备受欢迎的平台。其最新的官网网页版入口为 https://www.manwa2.com/,该平台以其海量的漫画资源、极致的阅读体验和便捷的功能,成为了漫画迷们的聚集地。 为了方便您直接访…

    2026年9月29日 • 用户投稿
    000
  • Java中排列数据的生成与逐个处理策略

    Java中排列数据的生成与逐个处理策略Java中排列数据的生成与逐个处理策略Java中排列数据的生成与逐个处理策略Java中排列数据的生成与逐个处理策略

    本文旨在探讨在Java中如何有效地生成所有可能的排列,并对每个独立的排列进行逐个处理。我们将通过一个经典的“雇佣助理”问题作为案例,详细阐述如何修正常见的将所有排列扁平化处理的错误,确保每个排列都能作为独立的输入传递给处理函数,从而实现正确的统计与分析,最终计算出特定条件下的概率。 理解问题:排列生…

    2026年9月29日 • 用户投稿
    100
  • 深入理解Java中全排列的生成与逐个处理

    深入理解Java中全排列的生成与逐个处理深入理解Java中全排列的生成与逐个处理深入理解Java中全排列的生成与逐个处理深入理解Java中全排列的生成与逐个处理

    本文旨在详细阐述在Java中如何生成数组的全排列,并针对常见的将所有排列组合成一个大数组进行处理的误区,提供正确的逐个处理每个排列的方法。我们将以“招聘助理”问题为例,演示如何高效地遍历和分析每个独立的排列,确保算法逻辑的准确性,并对比理论计算结果,加深对排列组合处理的理解。 1. 问题背景与目标 …

    2026年9月29日 • 用户投稿
    000
  • Java Swing:JRadioButton 选中项转换为字符串的正确姿势

    Java Swing:JRadioButton 选中项转换为字符串的正确姿势Java Swing:JRadioButton 选中项转换为字符串的正确姿势Java Swing:JRadioButton 选中项转换为字符串的正确姿势Java Swing:JRadioButton 选中项转换为字符串的正确姿势

    在Java Swing应用中,直接通过ButtonGroup.getSelection().toString()获取JRadioButton选中项的文本,通常会得到一个无意义的内存地址字符串。这是因为getSelection()返回的是ButtonModel对象,其toString()方法不提供所需…

    2026年9月29日 • 用户投稿
    200
  • 海棠书屋官方入口最新链接_海棠小说官网最新地址

    海棠书屋官方入口最新链接_海棠小说官网最新地址海棠书屋官方入口最新链接_海棠小说官网最新地址海棠书屋官方入口最新链接_海棠小说官网最新地址海棠书屋官方入口最新链接_海棠小说官网最新地址

    海棠书屋官方入口最新链接为http://www.ojianji.com/,用户可通过复制该网址到浏览器访问,平台提供丰富小说资源、多种阅读模式、智能推荐及跨设备同步等功能,支持搜索、收藏与离线缓存,注册后可参与评论并管理个人阅读记录。 海棠书屋官方入口最新链接在哪里?这是不少网友都关注的,接下来由p…

    2026年9月29日 • 用户投稿
    100
  • Java Swing:JRadioButton 选中项转换为字符串的正确方法

    Java Swing:JRadioButton 选中项转换为字符串的正确方法Java Swing:JRadioButton 选中项转换为字符串的正确方法Java Swing:JRadioButton 选中项转换为字符串的正确方法Java Swing:JRadioButton 选中项转换为字符串的正确方法

    在Java Swing应用中,当需要从JRadioButton组中获取用户选中的文本时,直接调用ButtonGroup.getSelection().toString()通常会得到一个无用的对象哈希值。本文将详细讲解如何正确地将JRadioButton的选中项转换为有意义的字符串,核心在于利用JRa…

    2026年9月29日 • 用户投稿
    100
  • MAC通知中心里的小组件怎么编辑和删除_MAC编辑与删除通知中心小组件方法

    首先进入通知中心并进入编辑模式,随后可重新排列、删除或添加小组件以优化信息展示,具体操作包括拖动排序、点击移除及从底部添加新组件。 如果您发现Mac通知中心中的小组件显示内容不符合您的使用习惯,或希望移除不再需要的信息模块,可以通过系统设置对小组件进行编辑和删除操作。这些自定义选项有助于提升信息查看…

    2026年9月29日
    100
  • 《索尼克赛车 交叉世界》与16家企业及品牌展开联动

    《索尼克赛车 交叉世界》与16家企业及品牌展开联动《索尼克赛车 交叉世界》与16家企业及品牌展开联动《索尼克赛车 交叉世界》与16家企业及品牌展开联动《索尼克赛车 交叉世界》与16家企业及品牌展开联动

    来源:官方 《索尼克赛车 交叉世界》携手16大品牌开启跨界联动 游戏内将推出限定自定义贴纸,供玩家装饰专属赛车!世嘉最新全明星竞速大作《索尼克赛车 交叉世界》确认将于2025年9月25日全球上线,登陆全平台。目前,本作已宣布与16家知名企业及品牌达成联动合作。这些品牌的LOGO、代表性产品及经典角色…

    2026年9月29日 • 用户投稿
    200
  • 虫虫漫画(攻城版)入口 虫虫漫画网页(攻城版)进入

    虫虫漫画(攻城版)网页入口为https://www.chongchongmanhua.com/gongchengban,支持多设备访问、页面简洁、加载迅速,具备夜间模式、高频更新、独家资源、离线缓存及追更提醒等功能。 观看地址一“☞☞☞☞虫虫漫画(攻城版)入口☜☜☜点击进入”; 观看地址二“☞☞☞☞…

    2026年9月29日
    200

发表回复

登录后才能评论
关注微信