自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 数据结构学习记录:树 + 二叉树 + 堆 从原理到手撕代码

本文系统梳理了树形数据结构的学习要点,涵盖树、二叉树和堆的核心知识。从树的基本概念、存储表示法,到二叉树的遍历、性质和存储结构,再到堆的实现、调整算法及其在排序和TOP-K问题中的应用。内容包含理论讲解、代码实现和典型问题分析,适合数据结构入门学习、考研复习和面试准备。通过递归定义、链式存储和数组实现等多种方式,全面展示了树形结构的实现与应用,帮助读者建立完整的知识体系。

2026-04-21 14:59:27 346

原创 数据结构精讲:树 → 二叉树 → 堆 从入门到实战

本文系统讲解了树形数据结构从基础到应用的完整知识体系。首先介绍树的基本概念、术语和存储表示法,重点讲解二叉树的性质、存储结构和三种遍历方式(前序、中序、后序)。然后深入解析堆这一完全二叉树的应用,包括堆的结构定义、调整算法(向上/向下)和核心操作(插入/删除),最后介绍了堆在排序和TOP-K问题中的实际应用。全文配有C语言实现代码,帮助读者从理论到实践全面掌握树形数据结构。

2026-04-21 14:55:59 509

原创 数据结构(四) 栈和队列 超详细讲解(原理 + 完整代码 + 算法题)

本文详细讲解了栈和队列两种基础数据结构。栈是后进先出(LIFO)结构,支持压栈和弹栈操作,可用数组或链表实现;队列是先进先出(FIFO)结构,支持入队和出队操作,通常用链表实现更优。文章提供了完整的C语言实现代码,包括栈的数组实现、队列的链表实现以及循环队列的特殊处理。通过示例代码演示了基本操作,如初始化、插入、删除等,并给出了运行结果(栈输出4 3 2 1,队列输出1 2 3 4)。最后还介绍了循环队列的特点和LeetCode相关题解。

2026-04-19 15:26:48 797

原创 手撕哈希表(Hash Table):从原理到C++完整实现

文章摘要 哈希表是一种通过哈希函数实现O(1)时间复杂度查找的高效数据结构。本文系统讲解了哈希表的核心概念,包括哈希函数设计、冲突处理方法以及C++完整实现。重点介绍了直接定址法、除法散列法等哈希函数设计方法,详细分析了开放定址法(线性探测、二次探测)和链地址法两种冲突解决方案的优缺点。文章提供了可直接运行的C++代码实现,涵盖哈希仿函数、开放定址法哈希表等关键部分,并给出了负载因子控制、扩容策略等工程实践要点。通过理论讲解与代码实践相结合的方式,帮助读者全面掌握哈希表的原理与实现。

2026-04-15 20:32:03 542

原创 Python第三课: 基础语法(2):顺序、条件、循环全攻略+人生重开模拟器

Python基础语法摘要 本文系统讲解了Python编程中的三大基本控制结构: 顺序结构 - 代码默认从上到下依次执行 条件分支: 三种形式:单if、if-else、if-elif-else Python特有语法:无括号、冒号结尾、缩进决定代码块 嵌套条件和pass占位符的使用 循环结构: while循环:适合不确定次数的情况 for循环:直接遍历可迭代对象,常用range()控制范围 控制语句:continue跳过当前循环,break终止整个循环 最后通过"人生重开模拟器"案例综合运用

2026-04-15 19:03:57 667

原创 算法复杂度从入门到精通:时间与空间复杂度全解析

本文系统讲解了算法复杂度的核心概念与分析方法。首先阐明学习算法复杂度的必要性,指出其能客观评估算法效率而不受硬件环境影响。接着从时间复杂度和空间复杂度两大维度展开,详细解释大O表示法的推导规则和常见复杂度类型(O(1)到O(N!))。文章还通过旋转数组案例对比不同解法复杂度,强调复杂度对算法性能的决定性作用,最后总结了校招面试中的常见考点和学习要点。全文旨在帮助读者掌握复杂度分析方法,为编写高效算法和应对技术面试打下坚实基础。

2026-04-14 20:07:20 501

原创 C++ 进阶:unordered_map 与 unordered_set 超全详解(哈希容器实战)

本文详细介绍了C++中unordered_map和unordered_set两种基于哈希表的关联容器。主要内容包括:1) 底层哈希桶实现原理及与红黑树容器的对比;2) unordered_set的完整使用方法,包括初始化、插入、查找、删除等操作;3) unordered_map的键值对存储特性及常用API;4) 通过性能测试展示哈希容器在增删查改上的效率优势;5) 自定义类型作为键值时的哈希函数实现方法。文章通过代码示例和性能对比,帮助开发者全面掌握这两种高效容器的使用场景和优化技巧。

2026-04-14 20:00:40 523

原创 Python入门第二课 基础语法(一)

这篇文章是Python基础语法入门教程,主要包含以下内容:1)使用Python作为计算器进行基础运算;2)变量概念及命名规则;3)Python的4种基本数据类型(整数、浮点数、字符串、布尔值)及其动态类型特性;4)注释的写法规范;5)输入输出方法,强调input获取的是字符串;6)常用运算符(算术、关系、逻辑、赋值)的使用;7)提供完整可运行的代码示例。教程通过简单易懂的比喻(如"变量是小储物箱")和实用示例(如计算平均数、方差)帮助初学者快速掌握Python基础语法要点。

2026-04-13 17:56:56 449

原创 数据结构(三) 带头双向循环链表 (附完整代码实现)

本文详细介绍了带头双向循环链表的实现原理与完整代码。该链表结构通过哨兵节点简化边界处理,支持高效的前驱/后继访问,是工程中最常用的链表形式。文章从节点结构定义出发,逐步实现了初始化、增删查改等核心接口,并提供了详尽的代码示例。通过与顺序表的对比分析,突出了双向链表在频繁插入删除场景下的性能优势。最后强调带头双向循环链表作为链表家族的最优结构,其设计思路值得深入掌握。全文代码可直接用于实际项目开发。

2026-04-13 17:50:01 571

原创 Python入门第一课:零基础认识Python + 环境搭建 + 基础语法精讲

本文是一篇Python入门教程,主要介绍了Python语言的基础知识和环境搭建方法。文章首先解释了Python的起源、特点和适用领域,对比了Python 2和3版本的区别。接着讲解了计算机基础知识和编程概念,详细指导了Python解释器和PyCharm开发环境的安装步骤。核心内容包括Python基础语法如变量、数据类型、运算符、输入输出等,并提供了多个实用案例演示。最后总结了初学者常见错误,帮助读者快速掌握Python编程基础。本文适合零基础学习者作为入门教材使用。

2026-04-12 16:50:27 541

原创 C++进阶:红黑树封装map/set & 哈希表unordered系列容器详解

本文深入探讨了C++ STL中关联式容器的底层实现,重点分析了红黑树和哈希表两种核心数据结构。文章首先介绍了红黑树派系(map/set)和哈希表派系(unordered_map/unordered_set)的特性差异,然后详细讲解了使用红黑树封装map/set的关键设计思想,包括模板参数设计、仿函数提取键值、迭代器实现等核心内容。 文章提供了完整的红黑树实现代码,包括结点定义、迭代器实现以及插入平衡等关键操作。通过模板化的设计,一套红黑树可以同时支持map和set两种容器,展示了STL设计的精妙之处。代码实

2026-04-12 16:44:48 497

原创 4道经典算法题代码详解:从两数之和到链表两两交换

这篇文章详细讲解了4道经典算法题的解题思路和C++代码实现,涵盖了哈希表、链表操作等核心算法技巧: 两数之和(LeetCode 1)- 使用哈希表优化查找,时间复杂度O(n) 两数相加(LeetCode 2)- 链表逆序存储数字,模拟加法运算处理进位 两两交换链表节点(LeetCode 24)- 通过指针操作交换相邻节点,不修改节点值 判定字符重排(未展开)- 使用哈希表统计字符频率比较 每道题都提供了完整的代码实现和详细注释,重点讲解了算法优化思路(如用哈希表替代暴力搜索)和链表操作技巧(如虚拟头节点简化

2026-04-11 20:35:02 431

原创 数据结构(二) 单链表专题(完整代码版)

本文介绍了单链表的概念、结构及完整实现。单链表是一种非连续、非顺序的存储结构,通过指针链接实现逻辑顺序。文章详细讲解了链表节点的定义(包含数据域和指针域)以及12个核心操作的实现代码,包括打印、头插尾插、头删尾删、查找、插入删除节点和销毁链表等。重点强调了二级指针在修改头指针时的必要性,并通过火车车厢的比喻形象说明链表特性。所有操作均采用动态内存管理,确保链表的灵活性。

2026-04-11 18:35:45 629

原创 6道经典算法题详解:从排序到链表,覆盖面试高频考点

本文精选了6道经典算法面试题,涵盖排序算法、分治思想和链表操作三大高频考点。题目包括三色排序(荷兰国旗问题)、归并排序实现、利用归并排序统计逆序对、链表相加以及链表两两交换等核心场景。每道题都配有详细解析、思路推导、完整C++代码实现和复杂度分析,帮助读者彻底掌握这些常见算法问题的解决思路和实现技巧。文章特别强调算法的时间复杂度和空间复杂度优化,提供原地排序、分治递归和链表指针操作等高效解决方案。

2026-04-10 14:59:16 544

原创 5道经典贪心算法题详解:从入门到进阶

本文详解了5道经典的贪心算法题目,从简单到中等难度,涵盖不同应用场景。每道题都包含题目解析、贪心思路推导、完整C++代码和复杂度分析。题目包括:860.柠檬水找零(简单贪心)、2208.将数组和减半的最少操作(优先队列)、179.最大数(自定义排序)等。贪心算法的核心是在每一步做出局部最优选择,从而期望获得全局最优解,适用于特定问题场景。通过这5道典型例题,读者可以系统掌握贪心算法的解题思路和实现技巧。

2026-04-10 14:52:56 551

原创 C++ 模板进阶:非类型参数、模板特化、分离编译全解析

本文深入解析C++模板三大高级特性:非类型模板参数、模板特化和分离编译问题。非类型模板参数允许使用常量值作为模板参数,但需遵守编译期确定的约束。模板特化分为函数模板特化和类模板特化(全特化/偏特化),可针对特殊类型提供定制实现,其中类模板偏特化包含部分参数特化和参数限制两种形式。最后分析了模板分离编译导致"undefined reference"错误的原因——模板只有在调用时才会实例化,声明与定义分离会导致链接期找不到函数地址。文章通过完整代码示例演示了静态数组模板、日期类指针特化等实用

2026-04-09 19:03:51 553

原创 C++ STL 栈与队列超全详解(含完整可运行代码)

本文全面介绍了C++ STL中的栈(stack)、队列(queue)和优先队列(priority_queue)三大容器适配器。内容涵盖基础用法、高频OJ题解和底层模拟实现,提供完整可运行代码。栈部分包括最小栈、栈序列验证、逆波兰表达式等LeetCode经典题解;队列部分展示双栈实现队列等技巧;优先队列部分实现堆结构和TopK问题。文章从理论到实践,适合学习、面试和刷题参考,所有代码可直接复制编译运行,方便读者快速掌握STL容器的核心用法和应用场景。

2026-04-09 19:01:48 342

原创 算法实战三连击:字符串构造与模拟思维深度拆解

本文通过3道LeetCode真题(1576、495、6)解析字符串处理与逻辑模拟类算法题的核心解法。1576题通过边界判断和枚举筛选替换问号;495题利用时间差计算累计中毒时长;6题采用周期分块遍历实现Z字形变换。总结出字符串构造、状态模拟和规律遍历三类问题的解题思路:边界处理+枚举筛选、累积计算+状态分支、找周期+分块收集。强调手动演算示例的重要性,并推荐相关延伸练习题。

2026-04-08 19:51:28 468 1

原创 位运算入门到精通:3道经典LeetCode题带你吃透二进制思维

替代常规运算:用异或、与、移位替代加减乘除,实现无运算符加法等特殊需求状态压缩:用整数的二进制位存储状态,实现O(1)空间的极致优化(如字符唯一判定)消去重复元素:利用异或的自反性,快速找到只出现一次的元素、丢失的数字等位运算,是计算机科学的底层语言,也是算法优化的核心工具。掌握位运算,不仅能帮你轻松应对面试中的高频考点,更能让你从二进制的视角理解计算机的运行逻辑,写出更高效、更优雅的代码。

2026-04-08 19:48:58 464

原创 C++ STL list 超详细解析:从接口使用到模拟实现

本文全面解析了C++ STL中的list容器,详细介绍了其底层实现为带头结点的双向循环链表,具有O(1)时间复杂度的插入删除操作特点。文章包含list的常用接口使用示例、迭代器失效问题分析、以及完整的模拟实现代码。重点讲解了list与vector的差异,插入不会导致迭代器失效而删除仅影响被删节点的特性,并提供了正确处理迭代器失效的方法。模拟实现部分展示了节点结构、正向/反向迭代器封装以及list主体实现的核心代码。全文内容丰富,适合学习STL容器和面试复习使用。

2026-04-08 19:45:20 279

原创 全网最细vector精讲:从接口使用到迭代器失效、模拟实现,C++面试必看

本文深入解析C++ STL中的vector容器,从基础使用到核心实现全面覆盖。首先介绍vector作为动态数组的重要性及其在编程中的广泛应用场景。详细讲解vector的构造方式、迭代器遍历、容量操作和增删查改接口,重点剖析扩容机制及优化方法。特别强调迭代器失效问题,分析扩容和erase操作导致的失效场景及正确处理方法。通过模拟实现vector的核心功能,包括三指针管理、深拷贝reserve和push_back等关键操作,揭示底层实现原理。最后总结vector高频面试考点,帮助开发者掌握这一必备容器。全文兼顾

2026-04-07 17:45:29 218

原创 从入门到精通:前缀和算法全解析,5道经典题吃透核心思想

前缀和算法是一种高效处理区间查询问题的技巧,通过预处理将查询时间优化到O(1)。本文系统讲解了一维和二维前缀和的核心原理,并通过5道经典题目深入解析其应用: 一维前缀和模板题:用s[r]-s[l-1]快速计算区间和 二维前缀和矩阵题:基于容斥原理处理子矩阵和 LeetCode 724:利用前缀和寻找数组中心下标 LeetCode 238:结合前缀积和后缀积计算除自身外的乘积 关键点包括:下标从1开始处理边界、使用long long防止溢出、二维情况下的容斥原理应用。前缀和算法可扩展性强,适合高频查询场景,是

2026-04-07 17:35:32 504

原创 硬核图解红黑树|从原理到C++完整实现,吃透面试高频考点

红黑树是一种高效的平衡二叉搜索树,通过颜色约束实现近似平衡,保证操作稳定在O(logN)级别。本文详细解析了红黑树的核心规则、平衡原理、与AVL树的对比差异,并提供了完整的C++实现代码。重点讲解了插入操作的三种处理情况:当叔叔节点为红时只需变色;同侧时单旋+变色;异侧时双旋+变色。红黑树凭借较少的旋转次数和良好的平衡性,成为Java HashMap、C++ STL等工程实践中的首选数据结构,特别适合频繁增删的场景。文章包含可直接运行的代码示例,帮助读者彻底掌握这一面试高频考点。

2026-04-07 17:29:37 925

原创 从三道经典二分题,彻底搞懂「二分查找」的两种核心写法

本文系统讲解了二分查找的两种核心模板及其应用场景。通过LeetCode三道经典题目(平方根计算、搜索插入位置、山脉数组峰顶查找),详细拆解了左闭右闭和左闭右开两种区间定义的实现差异,重点分析了向上取整避免死循环的技巧。每种模板都配有完整代码和关键细节说明,帮助读者掌握边界条件处理、循环终止判断等易错点,彻底吃透二分查找算法。

2026-04-06 16:01:20 541 1

原创 C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)

本文全面解析C++ STL中的string类,从基础使用到底层实现。首先对比C风格字符串的不足,介绍string的优势;详细讲解构造函数、容量操作、遍历方法等核心接口;深入分析VS和GCC下的底层实现差异(SSO短字符串优化与COW写时拷贝);重点剖析深浅拷贝问题及现代写法解决方案;提供可直接手写的模拟实现代码;最后附赠高频OJ题目及解答。文章涵盖面试必备知识点,帮助读者从使用到原理全面掌握string,适合C++开发者和面试准备者。

2026-04-06 15:38:21 782

原创 吃透STL:C++开发者必须掌握的标准模板库全解析

本文全面解析C++标准模板库(STL),从定义、版本、六大组件到学习路径。STL是C++核心组件,包含容器、算法、迭代器等,基于泛型编程思想。文章对比HP原始版、P.J.版、RW版和SGI版等实现版本,推荐以SGI STL为学习标准。详细拆解容器、算法、迭代器、仿函数、配接器和空间配置器六大组件,强调STL在笔试、面试和工作中的重要性。提出侯捷的STL学习三境界:能用、明理、能扩展,建议从基础使用到底层源码循序渐进学习。STL是C++开发者必须掌握的核心技能,理解其设计哲学能写出更高效健壮的代码。

2026-04-06 15:13:00 552

原创 [特殊字符]C++模板初阶通关:泛型编程核心,告别冗余代码!

【摘要】C++模板是泛型编程的核心工具,能有效解决代码冗余问题。文章从实际痛点出发,通过Swap函数案例展示了模板的价值:只需编写一次通用代码即可适配所有类型。重点解析了函数模板的原理(编译器根据实参类型生成对应函数)和两种实例化方式(隐式/显式),并强调模板不支持自动类型转换的特性。类模板部分以Stack为例,说明如何构建通用容器,提醒注意类模板实例化的特殊语法。文章最后总结了模板的核心知识点和常见避坑指南,指出模板是STL库的基石,掌握模板对理解现代C++至关重要。全文兼顾理论与实战,适合C++学习者巩

2026-04-05 15:55:19 398

原创 [特殊字符]C/C++内存管理深度解剖:从内存布局到new/delete底层,吃透面试必考核心

摘要:本文深度解析C/C++内存管理核心知识,从内存五大分区(栈、堆、数据段、代码段、内存映射段)开始,详解变量存储位置判断。对比C语言malloc/calloc/realloc/free与C++ new/delete的本质区别,重点剖析new/delete底层通过operator new/delete实现对象生命周期管理。提供malloc/free与new/delete的全面对比表,介绍定位new技术,并给出内存安全编程的黄金法则。最后总结内存管理核心要点,帮助开发者彻底掌握内存分配机制,避免内存泄漏和程

2026-04-05 15:53:30 895

原创 彻底搞懂AVL树:从原理到旋转,再到C++完整实现(超详细)

AVL树是最早发明的自平衡二叉搜索树,由两位科学家在1962年提出,它在二叉搜索树的基础上加入了严格平衡限制,避免树退化成链表。AVL = 严格平衡BST,高度差 ≤1BF = 右高 − 左高,必须是 -1/0/1插入后向上更新BF,出现±2则旋转4种旋转:左左→右旋、右右→左旋、左右→左右旋、右左→右左旋效率稳定O(logN)优点:查找极快;缺点:旋转频繁、实现略复杂。

2026-04-03 17:22:44 691

原创 C++ 类和对象(下)核心总结

这一篇是,全是面试高频、工程实用点,我给你整理成的版本,直接背会就能通关。

2026-04-03 16:50:17 346

原创 C++ 类和对象(中):6大默认成员函数彻底吃透,构造/析构/拷贝/赋值全通关

本文深入讲解C++类的6个默认成员函数,重点剖析构造、析构、拷贝构造和赋值重载四大核心功能。通过特征说明、代码示例和易错点分析,详细阐述了构造函数实现对象自动初始化、析构函数负责资源释放、拷贝构造实现对象克隆以及赋值重载处理对象间赋值的关键机制。文章还介绍了运算符重载、const成员函数等进阶用法,并总结不同场景下需要自定义实现的规则,最后提供高频面试题帮助巩固知识点。掌握这些内容是深入理解C++面向对象编程的关键。

2026-04-02 19:22:32 814 1

原创 C++ 类和对象(上):从0到1,彻底搞懂类、封装与this指针

本文介绍了C++类和对象的基础知识,包括类的定义、访问限定符、类域、实例化、对象大小计算和this指针等核心概念。重点讲解了封装如何通过public/private控制成员访问权限,类域作用域解析符的使用,以及this指针作为成员函数隐含参数的工作原理。通过对比C语言实现方式,展示了C++面向对象编程在代码组织和安全性上的优势。文章还包含常见面试题解析,帮助读者深入理解类与对象的关键特性。

2026-04-02 19:20:04 394

原创 C++ STL map 超详细使用教程(含完整代码)

本文详细介绍了C++ STL中的map容器,包括其基本概念、构造函数、遍历方式、插入方法、查找与删除操作。重点讲解了map强大的operator[]功能,可用于查找、插入和修改键值对。文章还涉及降序排列、multimap使用以及map的核心特性总结。map基于红黑树实现,具有自动排序和去重功能,适合映射、统计和查找场景。通过示例代码展示了map的各种用法,帮助开发者全面掌握这一重要容器。

2026-04-01 21:18:49 663

原创 # C++ STL —— set 超详细使用教程

红黑树(平衡二叉搜索树)自动排序(默认升序) + 自动去重增删查:(O(logN))双向迭代器,遍历为中序遍历,所以有序key 不可修改(修改会破坏树结构)set:自动去重、默认升序、key 不可改、(O(logN)) 操作multiset:可重复,其他与 set 一致常用场景:去重、排序、快速查找、判重不能修改元素,只能插入/删除/查找遍历有序,因为是红黑树中序遍历。

2026-04-01 21:16:01 387

原创 LeetCode 高频算法题:随机链表复制 + TopK 高频单词

本文解析了两道高频算法题:随机链表复制和前K个高频单词。对于随机链表复制,通过哈希表建立新旧节点映射关系,实现深拷贝并正确处理random指针,时间复杂度O(n)。前K个高频单词问题采用统计词频+自定义排序的策略,先按频率降序、再按字典序升序排列,时间复杂度O(n log n)。这两道题分别考察了链表操作和哈希统计与排序能力,是面试中的经典题型,掌握其核心思路和实现细节对算法面试至关重要。

2026-03-31 20:11:52 359

原创 C++入门核心知识点全解析:从基础语法到核心特性

本文系统介绍了C++入门核心知识点,包括基础语法和关键特性。主要内容涵盖:1)C++基础程序结构与编译运行方式;2)命名空间的三种使用方案及其解决命名冲突的原理;3)C++特有的输入输出流机制及效率优化方法;4)函数缺省参数的设计规则与使用场景;5)函数重载的实现原理与多态特性。通过代码示例和原理讲解,帮助读者快速掌握C++的核心语法特性,为后续深入学习打下坚实基础。

2026-03-31 18:27:10 527

原创 二叉搜索树(BST):概念、实现与应用全解析

二叉搜索树(BST)是一种基于左小右大规则的高效数据结构,是STL中map/set等容器的底层实现。文章详细解析了BST的核心概念、性能分析和基本操作。BST在最优情况下(完全二叉树)检索效率为O(logN),最差情况(单支树)退化为O(N)。相比二分查找,BST支持动态数据操作且无需连续存储。核心操作包括插入、查找和删除,其中删除操作根据结点子树情况分为四种处理方式。文章还提供了纯Key版的C++实现代码,包含结点结构定义和增删查方法。BST通过链式存储和特定规则,实现了高效的数据检索与管理。

2026-03-30 12:37:47 349

原创 LeetCode 经典算法题合集:二分查找 + 数组交集 + 环形链表

本文整理了4道经典算法题,涵盖二分查找、数组交集和环形链表检测。内容包括: 704题基础二分查找,详解区间定义、中点计算和收缩逻辑 34题进阶二分查找,通过两次二分定位重复元素的起止位置 349题数组交集,利用set去重和双指针高效求解 142题环形链表检测,提供哈希表和快慢指针两种解法 每道题都包含题目描述、核心思路、代码实现和关键细节分析,适合面试准备和算法学习。

2026-03-30 12:28:13 531

原创 C++多态详解:从概念到底层原理,一篇吃透

本文深入解析C++多态机制,从概念到底层实现全面剖析。多态分为编译时多态(函数重载、模板)和运行时多态(继承+虚函数)。运行时多态通过基类指针/引用调用虚函数实现,需满足继承关系、虚函数重写和基类指针调用三大条件。文章详细讲解了虚函数重写规则、override/final关键字、析构函数重写的必要性,并通过买票示例展示多态应用。底层原理部分揭示了虚函数表指针和虚函数表的工作机制,说明多态通过动态绑定实现。最后对比了重载、重写和隐藏的区别,帮助开发者彻底掌握C++多态技术。

2026-03-29 15:41:41 632 1

原创 滑动窗口经典三题:从异位词到减零问题 ✨

本文系统介绍了滑动窗口算法的三类经典应用:固定窗口(438.字母异位词)、可变窗口(904.水果成篮)和问题转换(1658.减零操作)。通过分析每题的解题思路、代码实现和关键细节,总结出滑动窗口的核心在于用线性时间遍历替代暴力枚举,通过窗口扩展与收缩高效求解子问题。文章还提供了通用解题模板和题型对比表,帮助读者快速掌握该算法的应用场景和实现技巧。掌握这三类题型即可应对大多数滑动窗口相关的算法问题。

2026-03-29 15:32:20 321

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除