自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单介绍一下我自己

简单介绍一下自己

2024-11-23 13:44:49 240

原创 C++篇(20)并查集

并查集

2025-11-25 17:08:43 103

原创 C++篇(19)智能指针

智能指针

2025-11-20 15:32:43 650

原创 C++篇(18)类型转换与IO库

类型安全是指编程语言在编译和运行时提供保护机制,避免非法的类型转换和操作,导致出现一个内存访问错误等,从而减少程序运行时的错误。C语言不是类型安全的语言,因为C语言允许隐式类型转换,在一些特殊情况下就会导致越界访问的内存错误,其次不合理的使用强制类型转换也会导致问题,比如一个int*的指针强制转换成double*访问就会出现越界。C++兼容C语言,支持隐式类型转换和强制类型转换,所以。

2025-11-16 22:27:56 625

原创 C++篇(17)哈希拓展学习

本文介绍了位图和布隆过滤器两种数据结构及其在解决海量数据处理问题中的应用。位图通过二进制位高效判断整数存在性,适用于40亿整数查询等问题,但仅支持整型数据。布隆过滤器则扩展应用范围,通过多哈希函数降低冲突率,适用于字符串等非整型数据的快速查询,但存在误判可能。文章还展示了这两种结构的C++实现,并分析了处理百亿级数据的解决方案,包括哈希切分等关键技术,为解决海量数据查询、统计和去重问题提供了实用方法。最后通过具体案例(如IP统计)演示了这些技术在真实场景中的应用。

2025-11-16 15:16:16 847

原创 C++篇(16)C++11(下)

近代C++之C++11

2025-11-14 22:28:02 1015

原创 C++篇(15)C++11(上)

现代C++之C++11

2025-11-12 14:54:24 571 1

原创 算法基础篇(10)递归型枚举与回溯剪枝

本文介绍了搜索算法的基本概念与实现方法。搜索是通过枚举所有可能情况来寻找最优解或统计合法解,主要包括深度优先搜索(DFS)和宽度优先搜索(BFS)。文中重点讲解了四种枚举问题的DFS实现:子集枚举通过递归构建选择路径,组合枚举按顺序选择元素,排列枚举使用标记数组避免重复,全排列则输出所有可能的排列。每个算法都包含回溯过程,即撤销选择以恢复现场。这些方法为解决问题提供了系统的枚举框架,适用于各种组合排列类问题。

2025-11-01 21:08:13 435

原创 算法基础篇(9)倍增与离散化

本文介绍了两种算法优化技巧:倍增思想和离散化。倍增思想通过翻倍操作将对数级处理转化为线性处理,演示了快速幂和快速乘的模板实现。离散化则用于处理数据范围大但总量小的情况,提供了排序+去重+二分查找和排序+哈希表两种实现方式。其中特别强调了离散化时需注意区间缩小问题,提出通过额外离散化x+1和y+1来保证正确性。文章包含多个代码模板和实际应用示例。

2025-10-26 17:31:55 323

原创 算法基础篇(8)贪心算法

本文介绍了贪心算法及其在多个经典问题中的应用。首先阐述了贪心算法的基本思想:通过局部最优选择逐步构建全局最优解。随后以货仓选址问题为例,展示了如何利用中位数位置实现最优解,并通过数学证明其正确性。接着讨论了最大子段和、纪念品分组等问题中贪心策略的具体实现。文章还介绍了公式法在排序问题中的应用,如拼数问题和保卫花园问题。最后探讨了区间类贪心问题,包括线段覆盖和雷达安装问题,详细说明了如何通过端点排序和重叠区间处理来获得最优解。每种算法都配有完整的C++代码实现和简要的数学证明。

2025-10-24 16:45:01 1554

原创 C++篇(14)二叉树进阶算法题

九道经典二叉树进阶算法题

2025-10-19 18:31:15 903

原创 C++篇(13)计算器实现

中缀表达式转后缀表达式以及简易计算器的实现

2025-10-16 20:16:36 1108

原创 C++篇(12)多态

C++多态

2025-10-09 14:49:42 643

原创 C++篇(11)继承

C++继承

2025-10-04 17:41:38 949

原创 算法基础篇(7)双指针

双指针算法

2025-09-28 22:07:40 383

原创 算法基础篇(6)差分

差分

2025-09-27 17:34:50 408

原创 算法基础篇(5)前缀和

前缀和

2025-09-25 21:43:38 404

原创 C++篇(10)模版进阶

模版进阶

2025-09-24 19:09:35 696

原创 算法基础篇(4)枚举

枚举算法

2025-09-21 18:26:58 405

原创 算法基础篇(3)高精度

高精度算法

2025-09-20 22:36:08 328

原创 算法基础篇(2)模拟

三道模拟算法题

2025-09-20 16:43:46 336

原创 C++篇(9)list的模拟实现

摘要:本文介绍了C++中STL list的模拟实现方法。通过带头双向循环链表结构,封装list_node节点类,实现push_back等基本操作。重点讨论了迭代器的实现:使用类封装节点指针,重载运算符控制迭代器行为;通过模板参数优化,统一普通迭代器和const迭代器的实现。同时展示了insert、erase等操作方法,并处理了迭代器失效问题。最后给出了完整的list类实现代码,包括构造函数、拷贝控制、元素访问等成员函数,以及测试用例验证功能正确性。

2025-09-18 22:57:11 475

原创 算法基础篇(1)位运算与操作符属性

本文介绍了二进制数的三种表示方式(原码、反码、补码)及其转换方法,重点讲解了位运算符(左移、右移、按位与、或、异或等)的使用规则和实际应用。通过多个编程练习,展示了如何利用位运算解决实际问题,包括进制转换、奇偶判断、二进制位操作、数字交换、查找唯一数字等。文章还详细说明了位运算在优化算法效率方面的优势,如使用x&(x-1)快速计算二进制中1的个数。这些技巧既体现了计算机底层原理,又能显著提升编程效率。

2025-09-16 17:07:32 767

原创 C++篇(8)vector的模拟实现

vector的模拟实现与迭代器失效问题

2025-09-13 16:41:02 758

原创 C++篇(7)string类的模拟实现

string类的模拟实现

2025-09-10 19:35:35 689

原创 C++篇(6)模版初阶

模版初阶

2025-08-28 16:49:47 415

原创 C++篇(5)类和对象(下)

本文介绍了C++面向对象编程中的几个重要概念:1. 初始化列表的使用规则和注意事项,包括必须使用初始化列表的情况、声明顺序影响等;2. 类类型转换机制,通过构造函数实现隐式转换,以及explicit关键字的作用;3. static成员的特性和使用方式,包括静态成员变量和函数的定义规则;4. 友元机制,如何通过友元函数和友元类突破封装限制;5. 内部类的定义和访问特性;6. 匿名对象的生命周期特点。这些概念涉及C++对象初始化、类型转换、封装控制等核心特性,通过代码示例展示了具体应用场景和注意事项。

2025-08-26 16:20:58 452

原创 C++篇(4)类和对象(中)

类的默认成员函数以及日期类的实现

2025-08-25 15:46:50 638

原创 C++篇(3)类和对象(上)

摘要:本文介绍了C++中类的定义与实例化相关内容。类通过class关键字定义,包含成员变量和成员函数,使用访问限定符控制访问权限。实例化时才会为对象分配内存空间,对象大小遵循内存对齐规则。重点讲解了this指针的工作原理,它是编译器自动添加的隐含参数,用于区分不同对象对成员函数的调用。通过两个示例程序演示了this指针为空指针时的不同运行结果,说明访问成员函数和访问成员变量的本质区别。文章还比较了class和struct在默认访问权限上的差异。

2025-08-21 16:23:32 700

原创 C++篇(2)C++入门(下)

引用 + 内联

2025-08-20 18:35:30 597

原创 C++篇(1)C++入门(上)

本文介绍了C++基础语法要点:1. C++兼容C语言但需使用.cpp后缀和g++编译器;2. 引入命名空间(namespace)解决命名冲突,支持嵌套定义和指定访问;3. C++输入输出使用iostream库,包含cin/cout对象和流操作符;4. 缺省参数分为全缺省和半缺省,需遵循从右往左连续缺省的规则;5. 函数重载支持同名函数但参数不同(类型/个数/顺序),返回值不同不能构成重载。这些特性体现了C++对C语言的扩展和改进。

2025-08-20 15:47:13 840

原创 数据结构(17)排序(下)

本文介绍了三种排序算法及其优化方法:1. 计数排序:通过统计元素出现次数实现排序,时间复杂度O(N+range),适用于数据范围集中的情况。文中详细说明了如何优化空间利用率,使用max-min+1确定数组大小。2. 快速排序优化:提出三路划分法处理重复数据,将数组分为小于、等于和大于基准值的三个区间,避免退化到O(n^2)复杂度。3. 归并排序拓展:包括非递归实现和文件归并排序(外排序),后者适用于大数据量无法全部装入内存的情况,采用分块排序再归并的策略。文章还分析了常见排序算法的时间复杂度和稳定性

2025-08-10 15:18:50 1128

原创 数据结构(16)排序(上)

本文介绍了四种常见的排序算法:插入排序、选择排序、交换排序和归并排序。插入排序包括直接插入和希尔排序,前者通过逐个插入构建有序序列,后者采用分组插入优化。选择排序分为直接选择和堆排序,直接选择通过找最值交换实现排序。交换排序包含冒泡和快速排序,快速排序采用分治思想,有Hoare、挖坑法和前后指针三种实现方式。归并排序利用分治法将有序子序列合并。文章详细阐述了各算法的实现原理、代码示例和时间复杂度分析,并指出特殊情况下的处理方式及优化技巧。

2025-08-08 17:01:36 1117

原创 函数栈帧的创建与销毁

拓展内容:函数栈帧的创建与销毁

2025-08-07 13:45:52 259

原创 数据结构(15)二叉树算法题

六道二叉树算法题 + 二叉树的拓展性质

2025-08-06 16:40:28 972

原创 数据结构(14)链式结构二叉树

本文介绍了链式结构二叉树的实现与操作。首先定义了二叉树的链式存储结构,包含数据域和左右指针域,并给出了创建二叉树的代码示例。重点讲解了三种基本遍历方式:前序遍历、中序遍历和后序遍历。随后详细介绍了二叉树常用操作,包括计算结点总数、叶子结点数、第k层结点数、树的高度、查找特定结点以及销毁二叉树等方法。文章还阐述了层序遍历的实现,借助队列数据结构完成。最后讲解了完全二叉树的判断方法,通过队列辅助实现。全文采用递归思想,配合代码示例和示意图,系统讲解了二叉树的基本操作与应用。

2025-08-05 15:28:34 907

原创 数据结构(13)堆

本文介绍了堆的概念、实现及其应用。堆是一种特殊的完全二叉树,分为大根堆和小根堆。文章详细讲解了堆的插入(向上调整算法)和删除(向下调整算法)操作,并提供了完整代码实现。堆的应用包括堆排序和Top-K问题:堆排序通过建堆和调整实现高效排序;Top-K问题则通过维护一个大小为K的堆来快速找出最大/最小的K个元素。文中还分析了不同建堆方式的时间复杂度,展示了堆在数据处理中的实际应用价值。

2025-08-04 14:46:26 1119

原创 数据结构(12)二叉树

本文介绍了树和二叉树的基本概念与存储结构。树是由n个结点组成的非线性层次结构,具有根结点、子树不相交等特点。二叉树是每个结点最多有两个子树的特殊树结构,分为满二叉树和完全二叉树。二叉树的存储方式包括顺序结构(适合完全二叉树)和链式结构(二叉链和三叉链)。文章详细阐述了树的相关术语、二叉树的性质及不同存储结构的适用场景。

2025-08-02 22:50:25 993

原创 数据结构(11)栈和队列算法题 OVA

循环队列

2025-08-01 22:36:43 542

原创 数据结构(10)栈和队列算法题

本文介绍了两种数据结构相互转换的实现方法:1. 使用队列实现栈,通过两个队列交替操作实现后进先出(LIFO)特性,入栈时选择非空队列插入,出栈时转移元素并弹出最后一个;2. 使用栈实现队列,通过入栈(pushST)和出栈(popST)两个栈的配合实现先进先出(FIFO)特性,入队直接压入pushST,出队时若popST为空则将pushST元素全部转移后弹出。两种实现都提供了完整的初始化、插入、删除、访问及销毁等操作的C语言代码实现。

2025-08-01 21:13:02 448

空空如也

空空如也

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

TA关注的人

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