- 博客(19)
- 收藏
- 关注
原创 数据结构大作业——家谱管理系统(超详细!完整代码!)
家谱管理系统通常以树形结构为基础,核心功能包括成员添加、删除、查询、修改以及家族关系展示。采用面向对象设计模式,结合文件存储实现数据持久化。实际开发时可根据具体需求调整功能模块,建议采用MVC架构分离数据、控制和视图层。完整实现代码需考虑异常处理、输入验证等边界情况。
2026-01-12 23:03:06
199
原创 【鼠鼠优选算法-双指针】003:快乐数 & 004:盛水最多的容器
快乐数是指一个正整数,将其替换为各个位上的数字的平方和,重复这个过程直到数字变为1,或者进入无限循环但始终变不到1。如果最终结果为1,则是快乐数。,表示一系列垂直线的长度。找出两条线,与x轴共同构成容器,使得容器能盛最多的水。给定一个非负整数数组。
2026-01-12 22:53:03
157
原创 深入理解 C++ 哈希:从概念到实战应用
哈希是一种将任意长度的数据映射到固定长度值的技术,核心目标是实现高效的数据存储与检索。哈希函数将输入(如字符串、对象)转换为唯一的哈希值(通常为整数),该值作为数据的索引或标识。哈希表是哈希的典型应用,通过数组和哈希函数实现键值对的快速存取。通过合理选择哈希函数和冲突解决策略,C++ 哈希能在绝大多数场景下提供高效的数据操作能力。当冲突发生时,按某种规则(如线性探测、二次探测)寻找下一个空闲槽位。负载因子(元素数/桶数)影响性能。每个槽位维护一个链表,冲突元素直接添加到链表中。
2026-01-12 22:46:54
140
原创 《算法闯关指南:动态规划算法--斐波拉契数列模型》--01.第N个泰波拉契数,02.三步问题
动态规划是解决递归问题的高效方法,尤其适用于斐波拉契数列及其变种问题。两个问题本质都是斐波拉契数列的三阶扩展,区别在于初始条件和问题背景。问题描述:小孩上台阶,每次可以跨1、2或3步,求到达第n阶的方法数。对于大规模n,需要注意数值溢出问题,及时进行模运算。
2026-01-12 22:44:49
124
原创 数据结构与算法 - 网络流基础:最大流问题的Ford-Fulkerson算法
Ford-Fulkerson算法是解决最大流问题的经典方法,通过不断寻找增广路径来逐步增加流量,直到无法找到新的增广路径为止。该算法适用于有向图,其中每条边有容量限制,目标是找到从源点到汇点的最大流量。
2026-01-12 22:41:58
152
原创 动态规划 —— dp 问题-粉刷房子
初始化dp[0][j] = cost[0][j] 对于每个房子i从1到n-1: 对于每种颜色j从0到k-1: 找到前一个房子i-1中所有不等于j的颜色c的最小dp值 dp[i][j] = cost[i][j] + min_value。用dp[i][j]表示第i个房子粉刷第j种颜色时的最小成本。状态转移方程为: dp[i][j] = cost[i][j] + min(dp[i-1][c]),其中c ≠ j。要求相邻房子颜色不同,求最小总成本。最后结果是min(dp[n-1][j])对所有j。
2026-01-12 22:37:26
133
原创 【算法】前缀和(一)原理
前缀和(Prefix Sum)是一种预处理技术,用于高效计算数组或序列中某个区间的累加和。通过预先计算并存储从起始位置到每个位置的累加值,可以将区间和的查询时间复杂度从。prefix[i] = \sum_{k=0}^{i-1} nums[k] \quad \text{(通常从 } i=1 \text{ 开始)}利用前缀和数组,区间。
2026-01-12 22:35:41
287
原创 【计算机算法与设计(8)】最小生成树算法(Kruskal 算法和 Prim 算法)
Kruskal 算法适合稀疏图,时间复杂度为 ( O(E \log E) ),主要由排序步骤决定。Prim 算法适合稠密图,使用二叉堆实现时时间复杂度为 ( O(E \log V) ),使用斐波那契堆可优化至 ( O(E + V \log V) )。初始化一个空的边集合作为生成树。依次检查排序后的边,如果加入当前边不会形成环路,则将其加入生成树集合。从队列中取出权重最小的边,将其加入生成树,并将新加入顶点的所有邻接边加入队列。算法从任意顶点开始,每次选择连接生成树与非生成树顶点的最小权重边。
2026-01-12 22:26:31
279
原创 Leetcode 98 从链表中移除在数组中存在的节点
题目要求从给定的链表中移除所有在给定数组中存在的节点。需要遍历链表,检查每个节点的值是否在数组中,若存在则移除该节点。关键在于如何高效处理节点的删除操作,尤其是头节点的特殊情况。采用虚拟头节点(dummy node)简化删除操作,避免单独处理头节点。遍历链表时维护前驱节点(prev)和当前节点(curr),遇到需删除的节点时更新前驱节点的指针。链表:1 -> 2 -> 6 -> 3 -> 4 -> 5 -> 6。
2026-01-12 22:24:50
235
原创 马年“码”上发力:用Manacher“马拉车”算法,拉平最长回文难题
Manacher算法是一种高效查找字符串中最长回文子串的线性时间算法。其核心思想是通过对称性和动态规划避免重复计算,将时间复杂度优化至O(n)。该算法特别适用于需要高频查询回文场景,如DNA序列分析或文本处理。理解其镜像原理和边界维护机制是掌握的关键。将原始字符串插入特殊字符(如#)以统一处理奇偶长度回文。例如,"abc"变为"#a#b#c#"。
2026-01-12 22:22:38
349
原创 【基础算法总结】哈希表/set/map篇
哈希表(Hash Table)是一种基于键值对存储的数据结构,通过哈希函数将键映射到表中的特定位置以实现高效查找。平均时间复杂度为O(1),最坏情况下为O(n)。: 结合哈希表记录前缀和出现次数,用于子数组求和问题(如LeetCode 560题)。: 将字符串排序后作为键,原字符串作为值存入映射(如LeetCode 49题)。哈希集合用于存储唯一元素,常用于去重或快速查找。哈希映射存储键值对,支持高效插入、删除和查找。: 利用集合特性,遍历时检查元素是否已存在。
2026-01-12 22:20:05
319
原创 【数据结构手札】顺序表实战指南(四):头插 | 头删
顺序表是一种线性表的存储结构,元素在内存中连续存放。头插和头删是顺序表的两种基本操作,涉及在表首位置插入或删除元素。内存管理:频繁的头插/头删可能导致大量数据移动,影响性能。批量操作:如需连续头插多个元素,可先收集所有元素,一次性移动现有数据后插入。扩容策略:动态顺序表在插入前应检查容量,必要时按一定策略(如加倍)扩容。替代结构:对于以头部操作为主的场景,链式结构(如链表)可能更合适。头删操作移除顺序表首位置的元素,后续元素需要前移以保持连续性。预留空间:若预期频繁在头部操作,可预留部分空间减少移动次数。
2026-01-12 22:17:04
299
原创 【C语言】排序算法——快速排序详解(含多种变式)!!!
快速排序是一种分治算法,通过选择一个基准值(pivot)将数组分为两部分:小于基准值的元素和大于基准值的元素。递归地对这两部分进行排序,最终完成整个数组的排序。JDK中Arrays.sort()采用的优化版本,使用两个基准值提高效率。处理大量重复元素时更高效,将数组分为小于、等于和大于基准值三部分。通过随机选择基准值避免最坏情况时间复杂度。减少递归调用栈深度,避免栈溢出。
2026-01-12 22:14:55
664
原创 【数据结构手札】顺序表实战指南(五):查找 | 任意位置增删
插入前需检查表是否已满,并确保插入位置合法($0 \leq index \leq length$)。删除需检查表是否为空,并确保删除位置合法($0 \leq index < length$)。删除后需将后续元素前移。:最坏情况下(删除表头元素)为 $O(n)$,平均 $O(n)$。遍历顺序表,返回第一个匹配值的索引,时间复杂度为 $O(n)$。:最坏情况下(插入到表头)为 $O(n)$,平均 $O(n)$。直接通过下标访问顺序表元素,时间复杂度为 $O(1)$。查找操作通常分为按值查找和按索引查找。
2026-01-12 22:12:36
504
原创 【DFS】羌笛何须怨杨柳,春风不度玉门关 - 4. 二叉树中的深搜
DFS 是二叉树遍历和问题解决的核心方法之一。递归实现简洁直观,而迭代实现更适合处理大规模数据。掌握 DFS 的三种遍历方式及其变种,能够高效解决许多二叉树相关问题。
2026-01-12 22:10:10
487
原创 Python缠论分析完整指南:如何用代码实现自动化交易系统
缠论是一种基于价格走势形态和动力学原理的技术分析方法,通过分型、笔、线段、中枢等结构判断市场趋势。在Python中实现缠论分析需要结合K线数据处理、形态识别和交易信号生成。
2026-01-12 22:04:50
692
原创 1小时搭建日志分析原型:Python+logging+可视化
以上方案可在60分钟内完成基础搭建,后续可根据需要扩展日志存储(如Elasticsearch)、增加机器学习异常检测等高级功能。可视化部分建议优先使用Plotly或Pyecharts实现交互式图表。
2026-01-12 21:59:42
37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅