- 博客(13)
- 收藏
- 关注
原创 C++算法基础--枚举
本文介绍了两种枚举方法的应用。普通枚举通过遍历所有可能情况解决问题,以铺地毯问题为例,从后往前检查地毯覆盖范围来找到最大编号解。二进制枚举则利用数的二进制表示状态,以子集问题为例,通过位运算判断元素是否被选中来生成所有子集。两种方法都适用于情况数量有限的场景,但需注意时间复杂度问题。代码示例展示了两种枚举方法的具体实现过程。
2025-11-30 16:47:21
217
原创 C++算法基础----高精度
本文介绍了四种高精度运算的实现方法:加法、减法、乘法和除法。针对大数计算超出数据类型范围的问题,采用数组存储每位数字并进行模拟运算。加法采用倒序存储、逐位相加和进位处理;减法通过比较字符串大小处理负数,并解决借位和前导零问题;乘法利用双重循环计算乘积并处理进位;除法模拟竖式计算,处理余数和前导零。每种方法都提供了完整的C++实现代码,包括数据预处理、运算核心逻辑和结果输出处理。这些方法有效解决了大数计算的精度问题。
2025-11-24 09:58:21
357
原创 C++算法基础----模拟
本文介绍了模拟算法思想及其应用。模拟是通过程序再现问题解决过程的方法,类似于军事推演。文章通过两个例题展示模拟思路:1)多项式输出问题,通过逐项处理系数正负、指数等特殊情况;2)蛇形方阵问题,利用方向向量控制填数方向,处理边界条件。两个例题都展示了如何通过逐步模拟来解决问题,其中多项式问题重点处理各种特殊情况,蛇形方阵则通过方向向量控制填充路径。完整代码展示了模拟算法的具体实现过程。
2025-11-13 15:15:58
414
原创 如何用4G模块与云服务器(公网)实现实时图传并保存视频内容
本文介绍了基于USB 4G模块的视频传输方案,包含硬件配置和服务端/客户端代码实现。硬件采用免驱动USB 4G模块连接云服务器,服务端代码使用Python搭建TCP服务器(9090端口),接收1280×720分辨率、10fps的视频帧并保存为5秒MP4片段,具备帧率校准、异常恢复等功能;客户端代码实现视频采集、压缩和传输功能,支持断线重连和质量调节。该系统专为4G网络环境优化,实现了流畅的720P视频传输。
2025-11-09 21:04:25
424
原创 C++二叉树:从原理到实战
摘要:C++二叉树是一种非线性数据结构,节点最多有两个子节点。文章详细介绍了二叉树的实现(使用TreeNode结构体)、核心特性(度、深度、高度)、基本操作(创建节点、四种遍历方法)、二叉搜索树(BST)及其操作,分析了时间复杂度,列举了典型应用场景,并强调了内存管理的重要性。最后以力扣226题为例演示了二叉树翻转的实现。二叉树是算法设计的重要基础,掌握其核心操作对理解高级数据结构至关重要。
2025-07-10 21:16:42
471
原创 C++中的栈与队列
摘要:C++标准库中的栈(stack)和队列(queue)是两种重要的容器适配器,分别遵循LIFO和FIFO原则。栈仅允许在栈顶操作,主要方法包括push、pop和top;队列则在队尾插入、队首删除,提供front和back访问方法。二者默认使用deque作为底层容器,所有操作时间复杂度为O(1)。典型应用场景包括:栈用于函数调用、表达式求值,队列用于任务调度和BFS算法。通过力扣225和232题展示了两种结构相互转换的实现方法,体现了它们的基本特性与差异。
2025-07-02 14:44:24
406
原创 C++实现字符串操作
摘要:C++提供两种字符串表示方式:C风格字符数组和std::string类。前者是以'\0'结尾的字符数组,需手动管理内存;后者是标准库提供的类,自动管理内存且功能丰富。std::string支持初始化、拼接、子串操作、查找替换、数值转换等常见操作,还能与C风格字符串相互转换。文章还介绍了字符串输入输出、迭代方式、性能优化(如reserve和移动语义)、多字节处理、算法操作(如reverse和sort)以及正则表达式支持。std::string因其安全性和便利性成为C++字符串处理的首选。
2025-06-29 19:55:06
508
原创 C++中哈希表的实现与相关用法
哈希表是一种高效存储键值对的数据结构,通过哈希函数将键映射到固定索引实现快速查找。常用冲突解决方法包括开放地址法和链地址法。哈希表广泛应用于快速查找、去重和缓存系统。通过例题展示了哈希表的实际应用:力扣349题使用unordered_set求数组交集并去重;202题利用set检测快乐数循环;454题运用unordered_map统计四数相加组合数。这些案例体现了哈希表在优化查找效率、处理重复数据和组合统计方面的优势。
2025-06-29 17:42:18
329
原创 基于C++实现二分查找以及双指针、滑动指针的理解
本文介绍了二分查找算法和双指针技术的应用。二分查找通过将有序搜索区间分成两部分,实现O(logn)时间复杂度的高效查找,文章给出了左闭右闭和左闭右开两种实现方式。双指针技术则用于优化数组操作,如删除特定元素(27题)和对有序数组平方后排序(977题),展示了不同双指针策略的实现方法,包括覆盖原数组和利用排序函数等优化方案。两种算法都能显著提升处理有序数据结构的效率。
2025-06-11 21:21:58
448
原创 C++实现单向链表定义以及增删改查详解
(1)节点构造(结构体)节点用结构体构造,每个节点需要存储一个数据和指向下一节点的指针(2)链表构造(类)链表存储头指针和链表长度,以及相关方法的实现。
2025-05-03 15:51:38
869
原创 C++实现顺序表(线性表)模板及其相关操作
顺序表模板定义为了保证代码的通用性,对顺序表中的数据类型定义为T泛型,上述代码中为int类型,这里的类型可以根据需要改成其他类型,结构体内部有三部分:指针、顺序表长度、顺序表最大上限。(为了适配于各种顺序表,这里对顺序表长度和上限有区分)。二、顺序表初始化调用该函数时,需要输入顺序表本身(输入的是顺序表头指针,否则处理的是顺序表的复制版本)和最大表上限,运行完该函数,顺序表即初始化成功。
2025-04-24 13:37:56
316
原创 基于JAVA的单向链表反转,删除节点,列表去重,合并链表
由节点(Node)构成,每个节点包含数据域和指针域。指针域指向下一个节点(单链表)、前/后节点(双链表)或头节点(循环链表)。链表是一种由节点组成的线性数据结构,每个节点包含数据和指向下一个节点的指针。常见的链表类型包括单链表、双链表和循环链表。链表支持的操作包括初始化、插入、删除、查找、反转、合并、检测环和排序等。但是在实际运行中,链表往往也会因为不能像数组一样存在索引存在某些问题。
2025-02-11 19:54:00
905
1
原创 在JAVA利用递归实现,二分查找,排序以及解决相关问题
我们不难发现,在多路递归中存在重复计算,比如:当计算到f(7)=f(6)+f(5)时,同时执行f(5)和f(6)的两个递归然后两个递归同时执行的时候会出现值的重复计算,比如:f(5)=f(4)+f(3),f(6)=f(5)+f(4)递归实现会出现爆栈,当结束条件没有执行时,之前的函数调用运算都在一直等待,导致栈内存爆满(如递归相加到15000,就会存在报错)。该代码实现的是多路递归,如:当计算到f(7)=f(6)+f(5)时,同时执行f(5)和f(6)和的两个递归,类似这种的递归方式叫多路递归。
2025-02-09 20:16:59
987
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅