自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 【算法】DFS(深度优先搜索)

之所以叫"深度优先",是因为它总是优先往深处扎,把一条路走到底才回头,而不是把同一层的选择先全部铺开(后者是 BFS)。DFS 所遍历的,是一棵由"状态 + 选择"构成的树:节点是状态,边是一次选择,根到叶的一条路径就是一种完整方案——DFS 做的就是对这棵树的深度优先遍历。每一步只从"上次选中的数之后"往下选,使选出的数天然升序,同一组合只会被走到一次——这就是防重复的关键。"三要素,绝大多数枚举与搜索问题都能对号入座地套出来——再往上,还能自然延伸到剪枝、回溯,以及图的深度优先遍历。

2026-08-28 16:38:48 506

原创 【算法】递归算法

定义中"形式相同"是关键。它把递归与普通的(stepwise refinement)区分开来——两者都对问题做分解,但递归要求分解出的子问题与原问题结构完全一致,只是规模更小。大多数算法策略在现实世界中都有对应:重复执行对应迭代,做判断对应条件控制。因此人们学forwhileif通常并不困难。而递归几乎没有直接的现实类比,所以更需要专门训练来掌握。

2026-08-28 15:34:16 573

原创 【算法】二分算法

提起二分查找,许多人的第一反应是“它用于在有序数组中快速查找一个数”。这固然没错,但这只是二分法的表象。如果我们只将二分法局限于此,当面对更复杂的场景(如寻找旋转排序数组中的最小值、在非单调函数中求极值等)时,便会感到无所适从。实际上,二分查找的本质远比“有序”更为深刻。它的核心可以概括为一句话:在定义的区间内,寻找某个性质的边界。只要数据能根据某一“性质”被划分为一前一后两个区间,二分法就能派上用场。

2026-06-26 16:58:00 525

原创 【算法】动态规划背包问题2

有N种物品和一个容量是V的背包。。第i种物品的体积是vi​,价值是wi​。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

2026-06-25 11:49:33 176

原创 【git】git介绍

Git学习与使用摘要 核心概念: Git采用树形结构管理代码版本,每个提交生成新节点 三大区域:工作区(当前目录)、暂存区(缓存区)、版本库(历史记录) 基础操作: 初始化:git init创建仓库 提交:git add→git commit -m "备注" 比对:git diff查看工作区与暂存区差异 推送:git push同步到远程仓库 分支管理: git branch:查看/创建分支 -d/-D参数:安全/强制删除分支 推荐使用交互式学习工具:learngitbranching.j

2026-06-17 16:32:23 210

原创 【docker】docker技术介绍

Docker 容器本质上是一组被隔离的 Linux 进程(进程树),它共享宿主机的 Linux 内核,并不是一台独立的虚拟机。软件开发中,环境配置是最令人头疼的问题之一。要让软件顺利运行需要操作系统的正确配置,以及所需库与组件的完整安装。以 Python 应用为例,目标机器需要匹配版本的解释器、完整的依赖包,乃至手动配置的环境变量——任何一环缺失都可能导致失败。开发者那句口头禅"在我机器上是好的"(It works on my machine),道尽了这种困境。每换一台机器就要重走一遍配置流程,耗时耗力。

2026-06-09 21:41:22 420

原创 【数据结构】二叉树

二叉树是最常用的树形结构,特别适合编码,常常将一般的树转换为二叉树来处理。二叉树的每个节点最多有两个子节点,分别称为左孩子、右孩子,以它们为根的子树称为左子树、右子树。二叉树的每层节点数以2的倍数递增,所以二叉树的第i层最多有2i−1个节点。如果每层的节点数都是满的,称它为满二叉树。一个n层的满二叉树,一共有2”一1个节点。如果满二叉树只在最后一层有缺失,并且缺失的编号都在最后,则称为完全二叉树。

2025-04-18 20:39:08 1346

原创 Leetcode链表题总结

leetcode提供的链表一般没有头结点,某些题目需要注意添加头结点,这样一来,我们就不需要对链表的第一个结点进行特殊的操作与判断了。

2025-04-18 11:36:28 1335

原创 【算法】搜索dfs

深度优先搜索(Depth-First Search,简称DFS)是一种经典的图遍历和搜索算法,它以"深度"为优先方向进行探索,广泛应用于各类问题的解决中。DFS算法使用栈(stack)作为其核心数据结构,可以是显式的栈结构,也可以通过递归调用隐式地利用系统栈。它的空间复杂度为O(h),其中h是搜索树的高度。

2025-04-17 11:43:02 399

原创 【算法】动态规划树形DP

在树这种数据结构上做DP很常见:给出一棵树,要求以最少代价(或最大收益)完成给定的操作。并且在树上做DP显得非常自然,因为树本身有“子结构”性质(树和子树)。基于树的解题步骤一般是先把树转换为有根树(如果是几棵互不连通的树,就加一个虚拟根,它连接所有孤立的树),然后在树上做DFS,递归到最底层的叶子节点,再一层层返回信息更新至根节点。

2025-04-11 20:41:43 1313

原创 【算法】动态规划线性DP

线性DP经典题目总结

2025-04-11 11:27:31 1186

原创 【算法】动态规划背包问题

动态规划背包问题总结

2025-04-09 22:18:03 1077

原创 【算法】动态规划

动态规划问题的简单介绍

2025-04-09 16:15:13 600

原创 【数据结构】并查集详解

由于每棵树的根结点代表该集合,当合并两个集合时,比如将a集合与b集合合并。为了保证a集合中的每个元素的根结点不重不漏地均变为b集合的根结点,只需将a集合的根结点root_a的父节点pre[root_a]更新为集合b的根结点。我们可以发现由于合并操作和查询操作只会用到集合的根结点,我们不需要维护树中每个元素的父结点,所以我们可以将每棵树的非根结点全部加到根结点的下方,也就是所谓的路径合并操作。如何方便的维护每个元素的根结点同时进行不同子集的合并操作呢?当查询某个元素的根结点时进行路径合并操作即可。

2025-04-08 14:48:14 544 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除