【软件测试】AI 赋能测试流程

【软件测试】AI 赋能测试流程

AI 赋能测试流程

一. AI 基础概念

1. AI 是什么?

AI 即人工智能,它所表现出来的智能主要能够模拟人类智能行为的机器或软件。这些智能行为包括学习、推理、解决问题、理解语言、识别模式等诸多方面。

生活中有很多关于 AI 应用的案例,例如,智能语音助手 (如苹果的 Siri、亚马逊的 Alexa) 可以理解人类的语音指令并做出相应的回应,这就是模拟了人类理解语言和交流的能力。

在这里插入图片描述

AI 能够根据用户的个人喜好、行为习惯等信息,提供个性化的产品和服务。这种个性化的用户体验不仅能够提高用户的满意度,还能增加企业的市场竞争力。在电商、在线教育等领域,AI 的个性化推荐功能已经成为重要的营销手段,如淘宝的猜你喜欢商品推荐,抖音推送根据用户行为习惯推送可能喜欢的视频和商品,“AI 比你更了解自己”。

在这里插入图片描述

人工智能高度依赖大数据进行模型的训练与优化,如今,表现优异的 AI 模型不断涌现,例如在自然语言处理领域掀起革命的 ChatGPT、开创性文生图模型 DALL·E、解决蛋白质结构预测难题的 AlphaFold,以及以强大推理能力著称的国产大模型 → DeepSeek-R1 等。

在这里插入图片描述

2. AI 为什么会被创造出来?

想象一下,人类一直有两大 “天性” 在推动技术进步:

  • “想偷懒” (追求效率与自动化)
  • “想更聪明” (处理海量信息与复杂问题)

就像我们发明了洗衣机代替手洗衣服、发明了汽车代替走路一样,人类一直希望机器能自动帮我们完成那些重复、枯燥、繁重甚至危险的工作。AI 的核心目标之一就是:让机器能像人一样思考、决策、甚至学习,从而自动完成更复杂的事情。

随着社会的发展,信息量呈爆炸式增长,数据多到人脑根本处理不过来 (比如每天产生的照片、视频、交易记录、科研数据),人类面临的很多问题也越来越复杂 (比如预测天气、研发新药、理解宇宙)。单靠人脑,速度和能力都有限,AI 的另一个目标就是:让机器能快速处理海量数据,发现隐藏的规律,辅助甚至超越人类进行复杂决策和预测。

简单的说,AI 的出现,是因为人类想造出更 “聪明能干” 的助手,帮我们自动化工作、解决复杂问题、处理海量信息。

3. AI 是如何被创造出来的?

可以把创造 AI 想象成教一个特别特别勤奋但开始啥也不懂的 “机器宝宝” 学习一项技能。这个过程主要分几步:

在这里插入图片描述

科学家先设定目标 (比如识图或翻译),然后给它喂海量 “教材” (标记好的数据) → 接着机器宝宝通过反复 “做题” (训练过程),根据对错自动调整内部无数小开关 (参数),疯狂寻找数据中的规律 → 学成后,用全新题目 (测试数据) 严格考试 → 最后,考试合格的 AI 就能上岗工作,应用于现实场景了。

其核心是让机器从巨量数据中 “自学” 出完成特定任务的能力。

然而是创造 AI 模型的过程是非常复杂的,需要收集大量训练数据集并对数据进行预处理,如数据清洗 (处理缺失值、异常值)、特征工程 (提取或构造对预测有用的特征) 以及数据标注 (为监督学习提供标签/目标变量),选择合适的机器学习算法或神经网络架构,通过优化算法进行模型训练等许多复杂流程。

科普中国,以动画形式了解人工智能的训练:https://www.bilibili.com/video/BV1134y1d72L

二. AI 赋能测试

1. AI 在测试领域的应用

在当今数字化时代,AI 技术正以前所未有的速度渗透至各个领域,各行各业都在积极拥抱 AI 以实现转型升级与创新发展。在此背景下,我们作为即将迈入软件测试领域中的一员,软件测试这一重要环节是否也能借助 AI 的强大力量来提升自身效能呢?

AI 能够凭借其强大的数据处理能力、智能的学习算法以及高效的模式识别功能,在软件测试领域大显身手。

  • 编写测试用例
在这里插入图片描述


以下是 AI 生成的测试用例中的一小部分:

在这里插入图片描述

编写测试用例是测试人员必不可少的测试工作,过去传统的测试工作通过手工逐条设计用例,这依赖工程师经验,耗时长且易遗漏边界场景,利用 AI 是否可以优化该工作呢?利用 AI 自动生成工覆盖用例,可以极大的压缩用例设计时间,提高场景覆盖率。

  • 自动生成文档

测试工作中需要输出一些文档,其中测试计划、缺陷报告、测试报告等尤为常见。而 AI 的介入,为这一流程带来了前所未有的变革与助力,使其更加高效、智能且精准。

  • 助力自动化测试

AI 可以根据需求搭建自动化测试框架,编写自动化测试用例,同时还能解决自动化脚本中出现的问
题,无需人工频繁地重新编写和修改脚本,节省了大量的人力和时间成本,提高了自动化测试的效率和频率。

AI 在软件测试的领域远不止此,随着技术的不断演进,其展现出的应用潜力正持续拓展。从测试用例生成、文档编写、自动化测试助力,到更深层次的智能分析,AI 正逐渐成为软件测试全生命周期中不可或缺的伙伴。

2. AI 在测试领域的发展趋势

在人工智能迅猛发展的当下,AI 技术正以前所未有的速度重塑软件测试与质量保障体系。由国内知名测试技术社区 TesterHome 发起主办的 MTSC 2025 第十四届中国互联网测试开发大会,于2025年7月12日在上海举行。本届 MTSC 2025 上海大会以 “质效革新・智领未来” 为主题,将目光聚焦于 AI 测试、大模型质量保障、自动化测试等前沿议题,吸引超千名来自华为、阿里、腾讯、字节跳动等企业的技术决策者与一线开发者齐聚一堂,共同探讨行业发展新趋势。

在 MTSC2025 大会上,AI 在测试领域的应用涵盖了多个维度,展现了其在提升测试效率、质量和智能化水平方面的巨大潜力。

MTSC2025 大会议程详见:https://testerhome.com/topics/4234

以下是基于大会内容的主要应用总结:

AI 驱动的测试用例生成与优化

在这里插入图片描述
  • 智能化生成:利用 AI 技术自动生成测试用例,覆盖更多边界场景和异常场景,减少手工编写的工作量和时间成本。
  • 动态调整:AI 根据系统更新和需求变化实时调整测试用例优先级和范围,确保测试的针对性和全面性。

AI 助力自动化测试

在这里插入图片描述
  • 自动化框架搭建:AI 自动构建和优化自动化测试框架,提升测试脚本的执行效率和稳定性。
  • 故障诊断与修复:AI 能够快速定位测试执行中的故障点,并提供修复建议,减少人工调试时间。

AI 在性能测试中的应用

在这里插入图片描述
  • 性能预测与优化:通过 AI 分析历史性能数据,预测系统性能瓶颈,提前优化以避免上线后的问题。
  • 动态负载模拟:AI 可以根据用户行为模式动态调整负载测试策略,更加真实地模拟生产环境。

AI 在质量保障中的深度参与

在这里插入图片描述
  • 缺陷预测与根因分析:AI 通过分析代码提交和历史缺陷数据,预测潜在缺陷并帮助定位根因。
  • 跨平台与多设备测试:AI 驱动的测试工具能够自动适配不同设备和操作系统,确保用户体验的一致性。

当前 AI 已深入测试生成、缺陷管理、持续测试等环节,核心价值是释放重复劳动,聚焦复杂问题。未来将向自治化、多模态、全链路智能化演进,测试工程师的角色也可能转向 AI 训练师、质量策略设计师和风险控制专家。

三. AI 驱动的测试流程

AI 能够广泛地融入测试流程的各个环节,先回顾测试流程:

在这里插入图片描述

各阶段具体内容:

需求分析测试计划测试设计测试执行测试评估上线运行维护
用户角度:软件需求是否合理;技术角度:技术上是否可行,是否还有优化空间;测试角度:是否存在业务逻辑错误、冗余、冲突等问题;制定测试计划:什么时候开发测试,什么时候结束测试,耗时多久参考需求文档、技术文档等编写测试用例,写测试文档,明确标注使用到的测试方法,测试工具,测试形式等等充分利用测试用例和测试工具对项目尽可能做到全方面的测试覆盖测试是否通过,本次测试是否有遗留的BUG,最终测试人员需要产出一个测试报告项目测试结束后,将项目发布到线上环境,测试人员需求跟踪上线并测试线上环境下软件的运行是否正确测试人员需要参与项目的实施工作。测试人员对项目产品的业务和操作非常了解,加上测试人员的沟通表达能力一般都比较强,所以测试人员可以参与用户使用软件的培训,在试运行项目时收集问题并及时反馈给相关负责人

1. AI 工具介绍

随着大模型技术的快速发展,AI 产品层出不穷。DeepSeek、Kimi、文心一言、纳米 AI 搜索、问小白等均提供可直接使用的网页版。其中 DeepSeek 和文心一言采用了自主研发的核心 AI 模型。纳米 AI 搜索和问小白则搭载了由深度求索 (DeepSeek) 研发的 DeepSeek-R1 满血版模型。所有用户均可通过各产品的官方网站体验其服务。

ChatGPT:由 OpenAI 开发,作为基于 GPT 架构的对话 AI,广泛应用于聊天、内容创作和问答任务。2025 年继续扩展其功能,吸引了大量用户和开发者。

Claude:由 Anthropic 开发,前 OpenAI 团队成员创立,强调安全性和价值观一致性,目标是提供可靠且友好的 AI 体验。2025 年进一步优化其模型家族。

Grok:由 xAI (马斯克) 开发,旨在提供真实、客观的回答,特别适合科学问题和外部视角分析。2025 年扩展了其应用场景和用户访问方式。

DeepSeek:中国初创公司,专注于高效 AI 模型开发,特别是在对话、代码生成和数学推理领域。

2025 年在全球 AI 竞争中崭露头角。

综合来看,每个模型都有自己的特色:ChatGPT 综合实力强、Claude 安全性最高、Grok 能获取实时信息、DeepSeek 开源且中文优化出色。不同的 AI 产品,在使用上存在差异,但差异不会过大,学习和工作中可以结合着来使用。

2. 需求分析

传统的需求分析阶段,测试人员需要反复研读需求文档,标注重点,交叉比对不同版本。特别是遇到模糊表述时,要组织语言去追问产品经理,这个沟通成本很高。

此外,在需求评审会议上,测试人员也需要站在不同角度上考虑需求问题,这对测试人员需求理解能力、业务经验要求非常高,往往经验少的测试人员在需求分析阶段很难提出关键性建议。AI 如何帮助测试人员在这一阶段提效呢?

2.1 识别需求中存在的问题

在这里插入图片描述

针对这一份简易版的需求文档,对于一名新手小白来说,能够理解需求已经很不容易了,但若要求其独立识别潜在缺陷 (如逻辑矛盾或规则缺失),则存在显著挑战。此时借助 AI 的需求分析能力,可系统性地发现隐藏问题。

不满足要求的提示词:“找需求的问题”。

在这里插入图片描述

通过该提示词,可以看到 AI 给出的结果其实并不符合我们的要求,我们希望 AI 能指出需求中存在的需求问题,而不是需求文档自身的格式、语法表达问题。

该提示词存在明显的三处问题:范围模糊、目标不明确、输出形式未定义,提示词中若存在范围模糊,导致结果可能遗漏关键领域;目标不明确,导致 AI 的回答并不是我们想要的;输出形式未定义,可能导致 AI 给出的结果信息杂乱,不成体系,我们无法迅速捕捉到关键信息。

满足要求的提示词:“请详细阅读需求,找出其中存在的模糊描述、不完整信息、逻辑冲突、遗漏或任何可能需要澄清的地方,并列出一个问题清单 (列举每一个问题时请标明原文出处或上下文,方便我与产品同事讨论)”。

在这里插入图片描述

2.2 需求快速理解与功能概要生成

在实际工作情境中,需求文档的复杂程度远远超出前面所展示的示例。通常情况下,产品经理所编写的需求文档的内容量会远超想象。其篇幅的长短与功能的数量以及功能本身的复杂度存在紧密关联。当功能繁多且复杂度高时,需求文档自然会内容丰富、篇幅冗长;反之,若功能简洁、复杂度低,文档则相对简短。然而,对于内容繁杂、篇幅较长的需求文档,测试人员往往会陷入困境。面对海量的文档内容,他们需要投入大量的时间进行阅读与理解,这无疑是一项既耗时又具有挑战性的工作。

以租房项目的产品需求文档为例,实际在企业中的需求文档规格:

在这里插入图片描述

租房是一个比较大的项目,功能丰富,且复杂度高,从需求文档来看,页数多达83页,字数更是逼近万字,需求文档内容如此之多,想要在较短时间内阅读完需求文档基本是不太现实的事情。借助 AI 是否可以将理解需求文档的工作事半功倍呢?

为了降低对需求文档的理解成本,利用 AI 可以先输入整份需求文档,输出模块化的功能概要和目标摘要。对需求文档有一定了解后再仔细阅读需求文档。

提示词:“请作为资深软件测试专家,帮助我分析下面的需求文档,从整体和各个模块的角度,提炼出需求的核心功能、业务目标以及各模块的主要实现内容,并以简洁明了的方式输出概要”。

AI 给出的结果截图 (不同 AI 模型给出的结果不完全相同):

在这里插入图片描述

通过 AI 提取的产品概述和核心模块,帮助测试人员快速了解产品整体框架和主要功能。在此基础上,测试人员再去阅读需求文档,可大幅节省时间。

3. 测试计划

测试计划,即在本次的项目中,测试该按照什么样的方式来进行。类似于组织一次打型聚会:你需要确定地点、时间、邀请谁、准备什么食物、安排哪些活动、以及应对突发情况的预案。测试计划在软件测试里,就像这次聚会的 “筹备指南”。它用简单的话说,就是把测试工作要做的事都提前计划好,确保测试过程顺利、不遗漏关键环节。

提示词:使用 AI 帮我们生成旅游攻略:

在这里插入图片描述

既然 AI 可以帮我们生成详细的旅游攻略,那么 AI 在软件测试中,也可以帮助测试人员生成详细的测试计划,不要忘了告诉 AI 我们具体要求。

提示词:我是一名软件测试工程师,现在要对图片上项目需求文档编写测试计划,在2天内完成对全部功能模块的测试,目前只有一名测试人员,输出《项目测试计划书》。

在这里插入图片描述

注意:AI 生成的测试计划不一定符合要求,可作为参考。工作中要根据部门测试人员、业务现状进行合理调整。

4. 测试用例

测试人员在进行项目测试之前需要先根据需求编写测试用例,在工作中,我们通常使用万能公式来编写测试用例,“功能测试 + 性能测试 + 界面测试 + 兼容性测试 + 易用性测试 + 安全测试”,而在具体的用例设计中,我们有时候也需要用到具体的编写测试用例的方法,比如等价类、边界值、正交法、判定表法、场景法、错误猜测法等,编写测试用例在测试工作中占据了大量的时间。

测试用例设计的好坏将直接影响项目的测试质量,而测试用例的质量往往跟测试人员的个人积累和经验有关,如何使用 AI 帮助测试人员设计比较优秀的测试用例呢?

4.1 AI 生成等价类

提示词:用户的手机号长度为11位,要求使用方法等价类设计测试用例。

在这里插入图片描述

4.2 AI 生成边界值

提示词:用户的手机号长度为11位,请使用边界值生成测试用例。

在这里插入图片描述

4.3 AI 生成正交表

使用正交表生成测试用例,仅仅借助人手工来设计正交表这是无法实现的,还需要额外借助工具 allpairs,但是工具的使用过程非常复杂,且 allpairs 生成的正交表和实际的正交表有出入,接下来看看 AI 生成的测试用例结果。

提示词:输入项有 “姓名、电子邮箱、密码、确认密码、验证码”,要么填写要么不填写,针对这5个输入项设计测试用例,要求使用正交法。

在这里插入图片描述

从结果来看,使用 AI 生成的正交表和 allpairs 生成的正交表区别并不大,AI 利用正交表生成的测试用例并不完整,也需要额外进行用例的补充,但是利用 AI 生成测试用例的流程和速度,要比测试人员利用 allpairs 生成的正交表流程简单,且速度快很多。

然而,实际在工作中,需要结合需求以及具体的方法来设计测试用例,而不是仅通过一个具体的方法来实现,接下来将 AI 结合在需求中,让 AI 直接基于功能来设计测试用例。

4.4 基于具体功能点设计测试用例

提示词:用户的手机号为11位,请针对该功能点设计测试用例,以表格形式汇总输出。

在这里插入图片描述

给 AI 发送了一个非常简单的功能点,并借助 AI 来生成测试用例。从结果来看,AI 生成的测试用例比较丰富,覆盖了正向、反向、边界等场景。

然而,给出的答案中仍然存在用例并不完整,如非数字 (中文、特殊字符等)、手机号输入过长、SQL 注入等,看到这里,我们想到了提示词的重要性,是否可以继续优化提示词从而达到,借助 AI 能完全生成 100% 正确的测试用例呢?

提示词优化:用户的手机号为11位,请针对该功能点设计测试用例,覆盖[边界值/异常流/兼容性]场景,使用[等价类划分/正交法]设计方法,汇总用例并以表格形式输出。

在这里插入图片描述

使用 AI 对功能点一个一个来设计测试用例的效率比较低,是否可以直接将需求文档提供给 AI,由 AI 来提取测试功能点并生成测试用例呢?

4.5 基于需求文档生成测试用例

提示词:请针对图片中的需求文档信息,提供测试功能点,并设计测试用例

  1. 覆盖维度:功能、易用、兼容、安全、性能。
  2. 测试点要覆盖:100%,需求、边界范围、格式、类型、为空等情况

测试点根据功能、兼容、安全等分类,每个分类要有:业务、正向、逆向区分以表格形式输出。

在这里插入图片描述

通过 AI 生成测试用例,速度要比测试人员自己编写测试用例的速度要快很多。但是从 AI 生成测试用例的结果来看,结果不一定完全满足测试人员的要求,AI 在提取功能点和对功能点设计的测试用例不是很完整,测试人员还需要对 AI 生成的结果进行验证、修改、增强 (补充业务逻辑、边界、负面测试、优化结构),最终实现的测试用例才可以真正应用到项目测试中。

因此 AI 可以在一定程度上可以提高测试人员的工作效率,但不能替代测试人员来完成测试用例设计的工作。

在这里插入图片描述

将 AI 视为测试人员的 “智能实习生” 或 “超级加速器”,而非替代者。它擅长处理模式识别、枚举和生成初稿,极大地提升效率,特别是在覆盖基础场景方面。然而,测试人员的核心价值在于其深刻的业务理解、批判性思维、创造性、风险评估能力和对 “测试意图” 的精准把握。这些是确保测试有效性的关键,也是 AI 目前无法复制的。

5. 测试报告

测试报告在业界并没有一个统一的模板,入职企业后根据业务组的要求编写测试报告即可,测试报告不仅要体现本次的测试数据、测试质量、测试结果,还需要有规范的格式,所以测试报告的编写也是一个耗时的工作,接下来我们看看如何利用 AI 来协助生成测试报告。

要生成测试报告,需要提供基础的数据,如用例的执行情况、bug 的情况。

举个栗子:本次测试项目编写了 85 个测试⽤用例,其他通过的测试用例有 72 个,执行失败的用例有 13 个。缺陷的数量有 20 个,其中已经关闭的有 19 个,推迟修复的 bug 有 1 个,需要按照优先级提供缺陷列表有了这些数据后,我们就可以整理提示词,使用 AI 来生成测试报告。

注意:AI 对话中除了可以上传图片外,还可以上传文件,AI 能够快速阅读文件内容。这里的测试报告我们希望按照规定的模板来生成。

提示词

@测试报告模板 请基于以下测试数据和测试报告模板生成一份测试报告: 数据源: [ 测试用例总数:85 通过用例:72 失败用例:13 缺陷个数:20个 关闭缺陷:19个 推迟修缺陷:1个 缺陷列表: 输入正确的账号和密码,点击登录,登录失败,严重,已修复 用户登录失败,验证码未刷新,一般,已修复 点击分享,分享链接错误,一般,已修复 下拉列表未提供输入框,对用户使用不友好,次要,推迟修复 ] 

生成结果

在这里插入图片描述

6. 提示词教程

提示:使用正确的提示词,工作效率能直接翻倍!

正确使用提示词,无非就是在与 AI 对话过程中,详细描述清楚我们具体的需求。然后,并不是所有人都能说清楚自己的要求,以下提供了常见的 AI 提示词框架,仅供参考。

6.1 ICIO 框架

  • Instruction (指令):明确告知 AI 需要执行的任务或回答的问题。
  • Context (背景):提供与任务相关的背景信息或上下文,以帮助 AI 理解情境。
  • Input (输入):列出 AI 执行任务所需的具体数据或信息。
  • Output (输出):指定期望的结果格式或输出方式。

示例1:

  • 指令:请撰写一篇约 100 字的文章,讨论人工智能在教育领域的应用。
  • 背景:人工智能正在被广泛应用于个性化学习、⾃动评分和教育数据分析等方面。
  • 输入:相关的研究数据和案例。
  • 输出:一篇结构清晰、语言流畅的文章,适合教育行业的专业人士阅读。
在这里插入图片描述


在这里插入图片描述

示例2:

  • 指令:请为电商系统支付模块生成一份完整的测试用例表,包括功能测试、边界测试和异常场景测试。
  • 背景:系统支持多种支付方式 (支付宝、微信支付、信用卡),支付金额必须大于0且小于等于100000元。支付失败超过3次,用户需要重新验证身份。
  • 输入:包括测试用户信息 (用户名、账号状态)、订单信息 (金额、订单状态)、支付方式 (支付宝、微信支付、信用卡)、交易次数等。
  • 输出:以表格形式展示,每条用例包含:测试编号、测试步骤、预期结果、优先级。生成至少15条测试用例,覆盖所有常见场景。
在这里插入图片描述

6.2 CRISPE 框架

  • 能力与角色 (Capacity & Role):定义 AI 应扮演的角色或身份。
  • 请求 (Request):清楚地说明希望 AI 执行的任务或回答的问题。
  • 信息 (Information):提供相关背景或上下文信息以辅助生成回答。
  • 风格 (Style):指定输出内容的语气或风格。
  • 参数 (Parameters):为生成内容设置限制或指导。
  • 示例 (Examples 可选):提供示例输出,展示期望的格式和质量。

通过包含这些元素,CRISPE 框架能够确保提示词清晰、结构化且策略明确,从而获得更精确、更可操作的 AI 输出结果。

示例1:

  • 角色:你是一位资深营销策略师。
  • 请求:请撰写一篇 200 字的可持续时尚趋势博客文章。
  • 信息:目标受众为关注环保的千禧一代。
  • 风格:使用对话式且引人入胜的语气。
  • 参数:并至少包含三条行业统计数据。
在这里插入图片描述


在这里插入图片描述

示例2:

  • 角色:你是一名资深软件测试工程师,擅长编写功能测试、边界测试和异常测试用例。
  • 请求:请为电商系统的登录模块生成一份测试用例表。
  • 信息:用户名和密码为必填项;支持邮箱或手机号登录;密码长度6-16位;错误登录超过5次账号锁定1小时。
  • 风格:请以表格形式输出,每条用例包含:测试编号、测试步骤、预期结果、优先级。
  • 参数:生成不少于10条测试用例,涵盖功能测试、边界值测试和异常场景。
  • 示例:例如:TC001,输入正确用户名和密码,点击登录,成功登录系统,高优先级。
在这里插入图片描述

随着 AI 大模型的发展,角色或身份已经不是非常关键的提示信息了。

框架存在的意义是提出了提示词的关键点,引导我们完整说出自己的需求,框架不是固定的模型,框架中的关键点信息可以混用,只要能完整说出自己的需求即可。掌握框架的使用,无需死记硬背。

Read more

【初阶数据结构08】——树的基本概念与堆的基本功能实现

【初阶数据结构08】——树的基本概念与堆的基本功能实现

文章目录 前言 一、树的概念 1.1 树的定义 1.2 树的相关术语 1.3 树的表示 1.4 树在实际中的应用 二、二叉树概念及结构 2.1 二叉树的定义 2.2 现实中的二叉树 2.3 特殊的二叉树 2.4 二叉树的性质 2.5 二叉树的存储结构 1. 顺序存储 2. 链式存储 三、堆的概念与结构 3.1 堆的定义 3.2 堆的存储结构 四、堆的基本功能实现 4.1 辅助函数:

By Ne0inhk
【递归,搜索与回溯算法 & floodfill 算法】深入理解 floodfill 算法:floodfill 算法小专题

【递归,搜索与回溯算法 & floodfill 算法】深入理解 floodfill 算法:floodfill 算法小专题

图像渲染     题目解析         算法原理         解法:暴搜          模拟过程          递归过程:        回溯过程:       处理细节问题     但是如果在上述矩阵的情况下,给我们的 color 不是 2 ,而是 1,也就是原始像素值和要修改像素值相同的情况,此时很有可能在递归的时候走重复路径: 我们不处理好这种特殊的情况,就很容易会写出 bug;所以在编写代码的时候,我们先判断一下,if (image[sr][sc]==color),直接返回即可,因为无需修改;      编写代码      报错原因:没有修改 image[ sr ][ sc ] 为 color 优化:本题并不需要 vis 数组来标记走过的格子,因为走过的格子都会修改,修改后会被剪枝条件筛查掉,并且这道题也没有递归出口,也不需要恢复现场; 岛屿数量     题目解析         算法原理         解法:

By Ne0inhk
力扣校招算法通关:双指针技巧全场景拆解 —— 从数组操作到环检测的高效解题范式

力扣校招算法通关:双指针技巧全场景拆解 —— 从数组操作到环检测的高效解题范式

文章目录 * 前言 * 双指针 * 例题讲解 * 移动零 力扣 * 复写零 力扣 * 快乐数 力扣 * 盛最多水的容器 力扣 * 有效三角形的个数 力扣 * 查找总价格为目标值的两个商品 力扣 * 三数之和 力扣 前言 在力扣校招算法题中,双指针技巧是一类高频且实用的解题方法。它并非真正的 “指针”,而是通过两个数组下标(或迭代器)的协同移动,在数组划分、区间求解、环检测等场景中实现高效遍历与逻辑处理,往往能将时间复杂度从暴力法的 O(n平方)优化至O(n),是校招笔试和面试中突破数组类难题的关键武器。 本专栏将围绕力扣校招高频的双指针题型展开,从 “移动零”“复写零” 的数组操作,到 “快乐数” 的环检测、“盛最多水的容器” 的区间优化,再到 “三数之和” 的多指针协同,逐一拆解双指针的核心逻辑、边界处理与去重技巧,

By Ne0inhk
【数据结构】二叉树初阶——超详解!!!(包含二叉树的实现)

【数据结构】二叉树初阶——超详解!!!(包含二叉树的实现)

【数据结构】二叉树初阶——超详解!!!(包含二叉树的实现) * 前言 * 一、树是什么? * 1. 树的定义 * 2. 一些常见术语 * 二、二叉树 * 1. 二叉树是什么 ? * 2. 二叉树的组成 * 2. 特殊的二叉树 * 3. 二叉树的顺序存储(完全二叉树) * 4. 二叉树的一些性质 * 三、二叉树的实现(重点!!!) * 1. 二叉树的链式存储(非完全二叉树) * 2. 实现思路 * 3. 代码实现 * (1)创建头文件&源文件 * (2)定义二叉树(定义) * (3)构建二叉树 * (4)二叉树遍历(前中后序) * (5)二叉树的层序遍历 * (6)二叉树节点个数的计算

By Ne0inhk