算法与数据结构
文章平均质量分 94
刀法如飞
我是李春平,四十不惑的中年程序员
二十年编程经验
对互联网和人生的思考
关注我️,分享技术、互联网、人生点滴感悟。
编程语言:Java/JS/Python/Go/C等
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Palantir Ontology 数据结构分析,与ER/OOP/DDD有什么区别?
Palantir Ontology是一种语义化数据结构框架,通过七种核心构件构建业务逻辑层:Property定义对象属性,ValueType赋予字段语义约束,ObjectType表示业务实体,LinkType建立对象间关系,ActionType声明业务行为契约,Function处理无副作用计算,SideEffect管理外部交互。这套体系强调声明式设计,将数据、逻辑、操作和安全统一管理,与ER/OOP/DDD等传统模式的关键区别在于:1)关系作为一等公民独立建模;2)行为契约与对象解耦;3)内置安全审计横切面原创 2026-05-17 15:29:16 · 623 阅读 · 0 评论 -
【JavaScript 数组去重的 20 种实现方式,学会用不同思路解决问题】
JavaScript数组去重的20种实现方式,涵盖了5种不同策略:基础循环、内置数组方法、Set/Map、排序优化和特殊场景处理。文章分析了不同方法的性能差异(从O(n²)到O(n)),推荐了最优方案如[...new Set(arr)]和filter+Set闭包的组合。通过流程图和代码示例详细展示了每种实现的核心思路,帮助开发者理解算法原理并选择适合场景的解决方案。特别强调了在AI时代掌握底层原理的重要性,以便更好地指导AI编程。原创 2026-05-16 14:46:27 · 412 阅读 · 0 评论 -
【Go 字符串查找的 20 种实现方式,用不同思路解决问题】
本文介绍了Go语言中字符串查找的多种实现方式,从标准库API到各类优化算法。标准库提供了高效的strings.Index和bytes.Index等方法,内部采用Rabin-Karp等优化策略。文章详细分析了朴素暴力算法及其改进思路,如KMP、BM等算法通过预处理模式串或滑动优化来提升性能。针对不同场景(单次查找、多模式匹配、字节流处理等)给出了推荐方案,并指出处理Unicode字符时的注意事项。这些方法展示了从基础到高级的字符串查找技术演进,帮助开发者根据需求选择最优解。原创 2026-05-15 21:32:10 · 435 阅读 · 0 评论 -
Rust数组去重的20种实现方式,AI时代用不同思路解决问题
本文介绍了在Rust中实现数组去重的20种方法,重点分析了不同实现方式的性能差异和适用场景。文章指出,由于Rust的所有权机制,数组去重不能像其他语言那样简单实现,反而促使开发者思考更清晰的算法逻辑。 文章将方法分为5大类:基础循环、HashSet/BTreeSet、排序去重、泛型实现和位图法。其中基础循环方法虽然简单但性能较差(O(n²)),适合教学场景;HashSet/BTreeSet方法性能最优(O(n));排序去重方法适合需要排序结果的场景;泛型实现可复用性高;位图法则适合处理海量非负整数。 文章特原创 2026-05-10 14:33:44 · 415 阅读 · 0 评论 -
【TypeScript 数组去重的 20 种实现方式,AI时代学会用不同思路解决问题】
本文总结了 TypeScript 数组去重的 20 种实现方案,按 5 种策略分类:基础循环、内置数组方法、Set/Map、排序优化和特殊场景处理。重点分析了不同方法的性能差异(O(n²) vs O(n)),推荐使用 Set 结合 filter 的高效方案(O(n)且保序)。文章还对比了 TS 相比 JS 的优势,包括泛型支持、类型安全和编译期校验。每种方法都提供了代码示例和适用场景说明,适合开发者根据实际需求选择最佳方案。源码已开源在 GitHub 供参考。原创 2026-05-08 19:17:49 · 512 阅读 · 0 评论 -
AI时代的大数据底层结构:Palantir Ontology深度解析
最近两年,大模型如火如荼,可仅仅是在互联网行业里面自循环,并没有走出自己的圈子,去为实体产业赋能,提升工业界的智能化水平。这是因为做企业AI应用的团队大多遇到过这一类问题:缺乏能让AI识别的数据结构。原创 2026-05-06 22:44:16 · 749 阅读 · 0 评论 -
Go数组去重的20种实现方式,AI时代解决问题的不同思路
文章摘要 本文系统介绍了Go语言中数组去重的20种实现方法,按5大类策略分类:基础循环、map与Set、排序去重、泛型与标准库、位图与递归。重点分析了不同方法的性能差异,从O(n²)的基础循环到O(n)的高效方案。文章通过代码示例和流程图对比了各种实现,推荐了生产环境适用的最佳实践:使用map[T]struct{}实现Set、排序后Compact、泛型函数等高效方法。同时解释了为何简单实现可能产生几百倍的性能差距,帮助开发者根据场景选择合适方案。原创 2026-05-05 21:24:49 · 377 阅读 · 0 评论 -
Java数组去重的20种实现方式——指导AI解决不同问题的思路
这篇文章介绍了Java中数组去重的20种实现方法,重点分析了5种核心策略及其性能差异。主要内容包括: 基础循环方法(6种): 使用双循环索引比较、List.indexOf、前后遍历删除等原始方式 时间复杂度O(n²),适合教学和面试场景 集合容器方法(5种): 利用HashSet、LinkedHashSet等集合特性 时间复杂度优化到O(1)或O(logn) 推荐日常开发使用LinkedHashSet保序 文章通过代码示例展示了每种实现的具体写法,并配以流程图说明核心算法逻辑。特别强调了不同方法在性能上的显原创 2026-05-03 08:01:39 · 379 阅读 · 0 评论 -
【合并已排序数组的三种实现策略,哪一种更可取?】
合并已排序数组的三种策略对比:双指针法(最优时间复杂度O(n+m),推荐大多数场景)、插入法(低空间复杂度O(1),适合内存受限)、合并排序法(简单实现但效率低O((n+m)²),适合快速原型)。选择依据:大数据量用双指针,内存受限用插入法,快速开发用合并排序。三种方法均保持稳定性。原创 2026-04-27 20:48:33 · 439 阅读 · 0 评论 -
十大排序算法全解:C/Java/Python/Go/JS 等多语言源码仓库
该仓库收集了10大经典排序算法(冒泡、插入、选择、快速、归并、堆排序、希尔、计数、桶、基数排序)的多语言实现,涵盖C/C++/Java/Python/JavaScript/Go/Rust等11种编程语言。每个算法提供2-6种不同实现思路,包含详细注释说明时间复杂度、空间复杂度和稳定性分析。特色包括性能对比测试、可视化排序过程和多种解法思路,适合学习算法原理、对比语言特性及掌握编程基础。所有代码开源,可作为算法学习和教学参考资源。原创 2026-04-05 14:07:18 · 385 阅读 · 0 评论 -
AI时代的算法思维:10大经典排序(第二篇)
文章摘要 本文介绍了三种经典排序算法:归并排序(稳定分治,适合外部排序和链表排序)、堆排序(基于堆结构,适合Top-K问题)和计数排序(空间换时间,适合小范围整数排序)。归并排序稳定且时间复杂度稳定为O(n log n),但需额外空间;堆排序原地排序且复杂度稳定,但缓存命中率低;计数排序线性时间复杂度,但仅适用于特定场景。每种算法都配有流程图、伪代码、应用场景和复杂度分析,帮助理解其原理与适用性。原创 2026-03-26 17:43:10 · 347 阅读 · 0 评论 -
AI时代的算法思维:10大经典排序(第一篇)
AI时代仍需学习经典排序算法,原因有二:1)排序思想广泛适用于信息流、推荐系统等场景;2)排序算法浓缩了分治、贪心等核心计算思想。文章系统介绍了10大排序算法,首先分析冒泡排序:通过相邻元素交换将最大值"冒泡"至末尾,时间复杂度O(n²),适合教学和小规模有序数据。选择排序则通过选择最小元素减少交换次数,同样具有O(n²)复杂度但交换次数更少。这些经典算法虽可由AI生成代码,但理解其思想对指导AI解决实际问题至关重要。原创 2026-03-26 17:38:30 · 387 阅读 · 0 评论 -
程序员必知必会的核心算法思想
摘要:本文介绍了程序员必须掌握的5种核心算法思想和2种常见问题解决策略。算法思想包括:1)贪心算法(局部最优选择);2)分治算法(分解-解决-合并);3)动态规划(状态转移优化);4)回溯算法(试错剪枝);5)分支定界(最优解搜索)。这些思想贯穿编程领域,掌握它们能显著提升问题解决能力。文章详细阐述了每种思想的核心特性、算法流程、适用条件和典型应用场景,帮助开发者根据问题特点选择合适的解题思路。原创 2026-03-05 13:49:42 · 402 阅读 · 0 评论
分享