- 博客(175)
- 资源 (3)
- 收藏
- 关注
原创 LeetCode算法题(Go语言实现)_23
数学本质:利用集合论中的笛卡尔积特性,将行列匹配转化为集合交运算工程优化:采用字符串哈希替代数组比较,减少内存占用(相比存储整型数组)扩展应用基因序列比对:检测DNA碱基链的互补匹配图像模式识别:匹配行列像素分布模式推荐系统:通过用户-商品矩阵寻找行为相似行列。
2025-04-01 20:00:00
343
原创 LeetCode算法题(Go语言实现)_22
集合存在性验证:通过字符存在位图快速排除异构字符集频率可交换性:排序操作将离散频率分布转化为可比序列。
2025-03-31 21:48:57
819
原创 LeetCode算法题(Go语言实现)_21
数学本质:集合论中的单射关系验证(频率集合与原集合大小相等)工程优化:利用哈希表与集合的 O(1) 查询特性实现高效判断扩展应用词频分析:验证文本中单词出现次数的唯一性数据校验:检测日志中事件发生次数的唯一性流式处理:结合布隆过滤器处理大规模数据流。
2025-03-31 21:45:03
483
原创 LeetCode算法题(Go语言实现)_20
数学本质:集合运算的差集操作(A - B 和 B - A)工程优化:哈希表去重与存在性检查的 O(1) 时间复杂度优势扩展应用多数组对比:扩展至 N 个数组的差异分析流式处理:使用布隆过滤器处理超大数据流数据同步:识别数据库表之间的差异记录。
2025-03-30 22:01:55
547
原创 LeetCode算法题(Go语言实现)_19
数学本质:利用总和公式快速判断平衡点工程优化:通过一次遍历完成总和计算和动态调整,避免内存分配扩展应用二维平衡点:在矩阵中寻找行列和相等的坐标多删除场景:允许删除多个元素时的最长子数组问题动态更新:流式数据中实时维护左右和(需结合树状数组)
2025-03-30 21:58:15
345
原创 LeetCode算法题(Go语言实现)_18
算法优势:通过动态规划思想将空间复杂度优化至常数级别,避免存储完整海拔序列工程价值:适用于实时海拔监控系统,如骑行导航软件中的高程提示功能扩展应用地形高程分析(结合GPS轨迹数据)运动体能消耗计算(基于累计爬升高度)三维路径渲染优化(快速定位最高点)
2025-03-29 09:16:53
766
原创 LeetCode算法题(Go语言实现)_17
核心创新:将删除操作转化为允许1个0的窗口问题,通过动态边界调整避免重复计算数学证明:最大有效窗口长度L满足L ≤ n-1,且必然覆盖最优解的可能性优化亮点整数运算避免浮点精度问题全1数组的特殊处理提升边界条件鲁棒性应用扩展网络传输质量控制(允许少量丢包)DNA序列分析(寻找保守片段)用户行为建模(连续活跃天数统计)
2025-03-29 09:08:48
403
原创 LeetCode算法题(Go语言实现)_16
窗口动态调整:通过zeroCnt计数器的状态机式管理,实现线性时间复杂度无效位置跳跃:当窗口收缩时,左指针可直接跳转到首个无效0的后一位,减少冗余计算。
2025-03-28 21:00:00
341
原创 LeetCode算法题(Go语言实现)_15
增量计算:通过窗口两端操作将时间复杂度从O(nk)优化到O(n)位运算优化:将元音判断转换为位掩码操作(如。
2025-03-28 20:00:00
383
原创 LeetCode算法题(Go语言实现)_14
核心创新:将传统O(nk)暴力法优化为O(n)线性算法,通过窗口滑动实现高效增量计算数学证明:设数组长度为n,滑动窗口共进行(n-k)次移动,完整覆盖所有可能子数组优化亮点消除重复计算,每次窗口更新仅需两次算术运算整数运算避免浮点精度损失,最后统一转换结果适用场景:实时数据流分析、大规模时序数据处理等需要高效计算的场景。
2025-03-27 20:30:00
874
原创 LeetCode算法题(Go语言实现)_13
核心创新:通过哈希表将配对问题转化为频率统计问题数学证明:设总有效配对数为m,必满足2m ≤ n,哈希法确保遍历所有可能组合优化空间:通过剪枝条件num < k减少无效存储扩展应用:可推广至三数之和等组合问题,需调整哈希策略。
2025-03-27 19:30:00
289
原创 LeetCode算法题(Go语言实现)_12
核心创新:通过移动短板的策略,在宽度递减的过程中寻找高度增益的可能性数学证明设最优解为(i,j),双指针法必会遍历到该解。若i先被移动,则必有j'为当时右指针),这与最优解矛盾应用场景:实时水位监测系统、图形学中的最大区域计算等。
2025-03-26 20:00:00
468
原创 LeetCode算法题(Go语言实现)_11
核心逻辑:双指针法通过同步遍历快速判断子序列关系,时间复杂度为O(n);预处理方法通过空间换时间优化高频查询场景。优化点双指针法的贪心策略确保匹配位置的最左对齐,避免回溯。预处理方法利用哈希表+二分查找将单次查询复杂度降为O(mlogk)。应用场景:实时数据流中的子序列匹配(如日志分析)、高频查询系统设计(如API服务)。
2025-03-26 19:30:00
857
原创 LeetCode算法题(Go语言实现)_10
•核心创新:通过双指针动态分区实现零元素归位,类似快速排序的partition操作•关键优势单次遍历完成操作完美保持非零元素原始顺序支持任意数字类型(正负整数、浮点数)•数学证明设数组含k个非零元素,经过n次遍历后:• 前k个位置必定存储原始非零元素• 后n-k个位置自动填充零元素•应用场景数据清洗、内存压缩、实时数据处理等需要高效原地操作的场景。
2025-03-24 20:00:00
304
原创 LeetCode算法题(Go语言实现)_09
核心创新:通过读写指针同步推进,实现"边读取边写入"的原地压缩关键技巧内层循环快速统计连续字符数数字转字符串实现多位数拆分直接覆盖原数组避免额外空间适用场景实时数据流处理、嵌入式设备存储优化等需要严格控制内存的场景数学证明该算法能保证压缩后的字符串长度始终≤原数组长度(由题目条件保证)
2025-03-24 19:00:00
306
原创 LeetCode算法题(Go语言实现)_08
•核心优势:贪心算法以O(1)空间实现高效判断,通过维护最小候选值降低后续匹配难度。•关键证明:若存在递增三元组,则在遍历过程中一定会被贪心策略捕获。即使first更新到较后位置,已记录的second仍隐含前面存在更小值。•适用场景:适用于需要高效检测递增模式的场景,如实时数据流分析。
2025-03-21 19:30:00
723
原创 LeetCode算法题(Go语言实现)_07
•核心逻辑:通过左右分解避免重复计算,两次遍历实现高效求解。•优化关键:复用输出数组存储中间结果,空间复杂度从O(n)优化至O(1)。•适用场景:类似“利用前后缀信息”的问题(如统计前后缀最大值、求和等)。
2025-03-21 19:00:00
703
原创 LeetCode算法题(Go语言实现)_06
•核心逻辑:分割→反转→拼接,直接利用标准库简化代码。•关键优化自动处理空格,避免手动遍历。•适用场景:类似“按规则重组字符串”的问题可参考此思路。
2025-03-19 19:24:08
317
原创 LeetCode算法题(Go语言实现)_05
•核心逻辑:双指针法高效定位元音并交换,确保时间复杂度为O(n)。•大小写处理:通过哈希集合统一判断大小写元音。•适用场景:类似“对称交换”或“特定元素重排”问题可参考此思路。
2025-03-19 19:08:57
580
原创 LeetCode算法题(Go语言实现)_04
•核心逻辑:贪心遍历,及时跳过不可种位置。•优化点:无需修改原数组,仅需判断条件并计数。•适用场景:类似“间隔放置”或“最大化覆盖”问题可借鉴此思路。
2025-03-18 21:21:20
322
原创 LeetCode算法题(Go语言实现)_03
•核心逻辑:通过两次遍历快速判断每个孩子是否能成为最大值。•优化点:仅需比较原始最大值,无需动态计算其他孩子的当前值。•适用场景:类似“比较静态条件”的问题可借鉴此思路。
2025-03-18 21:10:14
473
原创 LeetCode算法题(Go语言实现)_02
利用字符串拼接的对称性验证替代显式重复检查,将时间复杂度从。:类似问题如“重复子字符串模式”均可借鉴此思路。:通过数学性质快速缩小候选范围,避免暴力枚举。自身连接 1 次或多次)时,我们才认定 “(验证后直接截取)。
2025-03-17 20:00:00
403
原创 LeetCode算法题(Go语言实现)_01
给你两个字符串 word1 和 word2。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。:若某字符串未遍历完,直接将其剩余部分追加到结果末尾。,交替将字符添加到结果中,直到其中一个字符串遍历完。高效拼接字符串(类似 Java 的。返回 合并后的字符串。直接截取剩余子串追加。,存储合并后的字符串。
2025-03-17 19:30:00
343
原创 Golang学习笔记_49——解释器模式
解释器模式是一种行为型设计模式,通过定义语言的文法结构和解释器,实现对特定语法规则的解析执行。其核心特点包括:•文法抽象:将语法规则转化为类层次结构•递归解析:通过组合模式构建抽象语法树(AST)•动态扩展:支持新增表达式类型而不修改现有代码。
2025-03-10 20:00:00
781
1
原创 Golang学习笔记_48——中介者模式
中介者模式是一种行为型设计模式,通过引入中介对象来封装一组对象间的交互,实现对象间解耦。交互中心化:所有对象通信通过中介者进行解耦网络:消除对象间的直接依赖关系动态协调:可随时调整交互规则而不影响对象。
2025-03-10 19:30:00
775
原创 Golang学习笔记_47——访问者模式
访问者模式是一种行为型设计模式,允许在不修改已有对象结构的前提下定义新的操作。其核心特点包括:•操作解耦:将数据操作与数据结构分离•双重分发:通过两次方法调用实现动态绑定•扩展开放:新增操作无需修改现有类。
2025-03-08 20:00:00
1176
原创 Golang学习笔记_46——状态模式
状态模式是一种行为型设计模式,允许对象在其内部状态改变时改变自身行为,使对象表现如同改变了其类。其核心特点包括:•状态抽象化:将状态抽象为独立对象•行为动态化:运行时根据状态自动切换行为•条件解耦:消除复杂的条件判断语句。
2025-03-07 21:00:00
699
原创 Golang学习笔记_45——备忘录模式
备忘录模式是一种行为型设计模式,通过在不破坏对象封装性的前提下捕获和存储对象内部状态,实现状态的可追溯恢复机制。其核心特点包括:•状态封装:将对象状态隔离在专用备忘录对象中•历史回溯:支持任意时间点的状态版本恢复•权限隔离:状态存储与恢复操作限定在特定对象间。
2025-03-07 20:00:00
1157
原创 Golang学习笔记_44——命令模式
命令模式是一种行为型设计模式,通过将请求封装为独立对象实现调用者与执行者的解耦,支持请求的队列化、撤销重做和事务管理。其核心特点包括:•请求对象化:将操作抽象为可传递的命令对象•解耦调用链:调用者无需了解具体执行细节•操作可编排:支持命令的组合与顺序控制。
2025-03-06 20:00:00
1023
原创 Golang学习笔记_43——责任链模式
责任链模式是一种行为型设计模式,允许将请求沿着处理链传递,直到有对象处理它。其核心特点包括:•解耦请求与处理:发送者无需知道具体处理者•动态链式处理:可动态调整处理链顺序和组成•职责单一性:每个处理者专注特定类型请求。
2025-03-06 19:00:00
943
原创 Golang学习笔记_42——迭代器模式
迭代器模式是一种行为型设计模式,提供顺序访问聚合对象元素的方法,无需暴露其内部结构。解耦遍历逻辑:将遍历算法与聚合对象分离统一访问接口:为不同数据结构提供一致的遍历方式多态迭代:支持多种遍历策略(正序/倒序/过滤等)
2025-03-03 21:57:23
634
原创 Golang学习笔记_41——观察者模式
Golang学习笔记_38——享元模式Golang学习笔记_39——策略模式Golang学习笔记_40——模版方法模式观察者模式是一种行为型设计模式,建立对象间的一对多依赖关系,当一个对象(主题)状态改变时,自动通知所有依赖对象(观察者)。其核心特点包括:二、特点分析优点缺点2. 物联网设备状态监控3. 电商订单状态通知四、Go语言实现示例执行结果五、高级应用1. 异步通知机制(参考网页10)2. 事件过滤机制六、与其他模式对比模式核心区别典型场景
2025-03-03 21:55:23
952
原创 Linux系统中的“钩子”
上述钩子覆盖了从内核到用户空间、从硬件事件到软件行为的多种场景。LD_PRELOAD:拦截动态库函数调用(用户态)ptrace:调试并修改进程行为(如GDB底层原理)内核模块挂钩:直接修改内核函数指令(需谨慎,影响稳定性)。具体选择取决于需求的安全层级和复杂度。例如,快速调试可用bpftrace,而安全审计更适合LSM或auditd。
2025-02-28 21:45:00
386
原创 Android系统的“层次”结构
应用层(View绘制) → WMS(窗口管理) → OpenGL ES(图形计算) → SurfaceFlinger(合成) → 显示驱动(输出到屏幕)内核(传感器驱动) → Sensor HAL → Framework(SensorManager) → 应用层(获取数据)应用层 → AMS(创建进程) → ART(加载DEX) → HAL(硬件资源分配) → 内核(进程调度)
2025-02-28 21:45:00
214
原创 Golang学习笔记_40——模版方法模式
模板方法模式是一种行为型设计模式,通过在抽象类中定义算法的骨架,并将部分步骤的实现延迟到子类中,实现代码复用和扩展控制。算法框架固化:父类定义不可变的执行流程步骤差异化:允许子类重写特定步骤实现扩展控制:通过钩子方法提供选择性扩展点抽象粒度:合理划分步骤粒度(建议5-8个步骤)扩展控制:使用final限制模板方法,提供钩子扩展点性能优化:避免在模板方法中进行复杂计算(网页10建议将耗时操作放在具体类)
2025-02-27 21:00:00
1485
原创 Golang学习笔记_39——策略模式
策略模式是一种行为型设计模式,通过定义一系列可互换的算法,并将其封装为独立类,使得算法可以独立于客户端而变化。核心思想是将算法与使用场景解耦,支持运行时动态切换策略。策略模式通过算法封装和动态切换灵活扩展:新增策略无需修改上下文代码复用:相同策略可被多个客户端共享条件简化:消除复杂的if-else分支通过接口实现多态,而非继承使用工厂模式管理策略实例组合策略实现复杂算法叠加避免策略类过度细分(如差异过小的策略合并)
2025-02-27 16:17:08
1035
原创 Golang学习笔记_38——享元模式
享元模式是一种结构型设计模式,通过共享对象来有效支持大量细粒度对象的复用,从而减少内存占用和提高性能。内部状态(Intrinsic):可共享的固定属性(如字符编码、颜色配置)外部状态(Extrinsic):不可共享的运行时上下文(如坐标位置、字体大小)享元模式通过共享细粒度对象内存占用问题:减少重复对象的存储性能优化问题:降低对象创建开销状态管理问题:明确区分内外状态使用sync.Map或mutex保证线程安全严格分离内部/外部状态合理设计对象键值(如颜色+名称组合键)
2025-02-25 11:43:12
1062
原创 Golang学习笔记_37——外观模式
外观模式是一种结构型设计模式,通过为复杂子系统提供一个统一的高层接口,降低客户端与子系统的耦合度,使得子系统更易使用。外观模式通过封装复杂子系统简化接口:客户端调用复杂度显著降低解耦设计:隔离变化,提升系统可维护性灵活扩展:支持多层外观和子系统自由组合合理划分子系统职责避免外观类过度膨胀权衡直接访问子系统与通过外观访问的边界。
2025-02-25 10:54:39
745
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人