
算法和数据结构
文章平均质量分 90
个人的刷题经验碎碎念
CodeLongBear
欢迎一起交流Java后端知识
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
N皇后不会? -- 全排列回溯一招搞定(附代码)
本文介绍了排列型回溯算法解决全排列和N皇后问题的核心思想与实现。通过"选择-探索-撤销"的递归框架,为每个位置尝试所有可能选项。对于全排列问题,使用used数组避免重复选择元素;对于N皇后问题,则通过记录列、对角线占用情况来确保皇后不互相攻击。两种问题都体现了回溯算法在组合搜索中的强大能力,其时间复杂度分别为O(n!)和O(n^n)。文章提供了清晰的C++代码实现,展示了如何将抽象的回溯思想转化为具体解决方案。原创 2025-10-01 07:00:00 · 924 阅读 · 0 评论 -
算法中的 “并” 之美:从数组、链表到并查集的统一思想
文章摘要:本文揭示了算法设计中"并"操作的核心思想,通过归并排序、链表合并和并查集三个案例,阐述了"并"操作的三大要素:输入(独立有效的子集)、规则(明确的整合逻辑)和输出(全局有效的集合)。重点分析了三个场景在子集独立性、规则驱动性和全局构建目标上的相似性,并附代码实现展示了"并"思想的具体应用。文章指出理解"并"的精髓可以帮助我们把握算法设计的本质规律。原创 2025-09-29 07:00:00 · 1209 阅读 · 0 评论 -
高精度计算:加法与减法的艺术 —— 从原理到实现
高精度计算是处理超大整数的有效方法,通过将数字拆分成小块存储在数组或字符串中,模拟人工竖式计算。加法核心步骤包括逐位相加和处理进位,而减法需要处理借位和大小比较。文中提供了C++实现代码,采用倒序存储便于计算,并涵盖了正负数处理。高精度计算可拓展至乘法、除法等运算,实际开发中也可直接使用GMP等成熟库。该技术不仅实用,更能体现计算机科学中"分而治之"的核心思想。原创 2025-09-25 07:00:00 · 1163 阅读 · 0 评论 -
动态规划之 0-1 背包问题详解与实战
本文深入解析了0-1背包问题及其在算法中的典型应用。0-1背包问题要求在给定容量的背包中选择物品,使总价值最大化且每个物品最多选一次。文章通过三道经典题目展示了其实际应用:416题转化为判断是否存在子集和等于总和一半;494题转化为计算达到目标和的不同方案数;474题则是二维背包问题,需要同时考虑0和1的数量限制。核心思想在于将实际问题转化为背包模型,通过动态规划求解。掌握0-1背包模型有助于解决更复杂的动态规划问题。原创 2025-09-02 06:45:00 · 1090 阅读 · 0 评论 -
10 分钟搞懂 Dijkstra:从导航软件到代码实现,图论最短路径的王者算法
Dijkstra算法是一种用于计算图中节点间最短路径的经典算法。它采用贪心策略,通过优先队列选择当前最近的节点,逐步更新邻居节点的最短距离。算法适用于无负权边的图,时间复杂度为O(n+mlogm)。核心实现包括邻接表存储图结构、小根堆选择最近节点以及"懒更新"机制跳过无效数据。该算法广泛应用于导航、物流配送等路径规划场景。原创 2025-08-23 13:12:21 · 870 阅读 · 0 评论 -
二叉树高频算法题全解析:从基础遍历到进阶应用
本文精选15道二叉树经典题目,涵盖遍历、特性判断、结构转换等核心场景。重点包括:1)基础遍历(中序、最大深度、翻转、对称);2)DFS/BFS应用(直径计算、层序遍历、右视图);3)二叉搜索树专项(平衡BST构建、验证BST、第K小元素)。文章强调递归思维和遍历方式的灵活运用,提供清晰解题思路和代码实现,帮助读者系统掌握二叉树算法。建议按模块刷题并总结规律,形成解题模板。剩余路径与重构问题将在后续补充。原创 2025-08-22 13:25:54 · 1420 阅读 · 0 评论 -
链表算法全解析:从基础到进阶,掌握链表操作精髓(二)
本文介绍了链表相关的五个经典算法题解:1.环形链表II - 通过快慢指针判断环的存在,并利用数学推导找到环入口节点;2.两数相加 - 采用模拟竖式加法,处理不同长度链表和进位问题;3.删除倒数第N个节点 - 使用双指针法,并引入哨兵节点简化边界处理;4.两两交换节点 - 通过迭代法或递归方式实现相邻节点交换;5.复制带随机指针的链表 - 采用哈希表或拼接拆分法实现深拷贝。每种解法都提供了核心思路和C++实现代码,并特别强调了使用哨兵节点处理边界情况的技巧。原创 2025-08-20 13:23:35 · 529 阅读 · 0 评论 -
链表算法全解析:从基础到进阶,掌握链表操作精髓(一)
本文系统梳理了链表数据结构及其经典算法题目。首先回顾链表基础概念,比较其与数组的特点,介绍单链表、双链表等常见类型。随后详细讲解五类高频链表问题:1)相交链表通过长度差调整实现同步遍历;2)反转链表采用迭代或递归方法;3)回文链表结合快慢指针与链表反转;4)环形链表使用快慢指针检测;5)有序链表合并提供迭代和递归两种解法。每种问题均给出核心思路、代码实现及复杂度分析,涵盖链表操作的关键技巧,适合算法学习者系统掌握链表相关考点。原创 2025-08-20 12:35:18 · 1065 阅读 · 0 评论 -
如何理解递归 -- 讲讲二叉树和递归
本文探讨了解决二叉树问题的递归方法,以计算二叉树最大深度为例。重点介绍了两种递归思路:自底向上方法通过递归计算子树深度后返回根节点最大深度,代码简洁高效;自顶向下方法则通过维护全局变量记录深度,适合需要记录中间状态的场景。文章阐述了递归的数学原理(类似数学归纳法)和计算机执行机制(调用栈的压栈与弹栈过程),并比较了两种方法的优缺点。理解递归关键在于把握问题分解和子问题相似的特性,以及正确处理边界条件。原创 2025-08-19 12:58:39 · 1328 阅读 · 0 评论