- 博客(70)
- 收藏
- 关注
原创 本地模块的发布与使用
本文介绍了如何将自定义Java模块发布到本地Maven仓库以便复用。主要步骤包括:1) 配置模块的pom.xml文件,定义GAV坐标和依赖;2) 通过mvn install命令或IDE工具将模块安装到本地仓库;3) 在其他项目中通过GAV坐标引入该依赖。这种方法实现了代码复用,简化了项目管理,是Java开发中提升效率的实用技巧。
2026-03-04 20:57:02
232
原创 031动态规划之数位DP——算法备赛
数位DP是一种解决数字区间统计问题的动态规划方法,通常采用记忆化搜索实现。核心思想是递归处理每一位数字,通过参数控制取值范围(is_limit)和是否跳过前导零(is_num)。文章介绍了数位DP的通用模板和三个典型应用:1) 统计区间内各数字出现次数,2) 计算满足特定后缀和数位限制的强大整数数量,3) 统计不含重复数字的特殊整数个数。这些案例展示了数位DP在处理数字性质统计问题上的高效性和灵活性,时间复杂度通常与数字位数相关。
2026-02-25 22:12:16
346
原创 030动态规划之树形DP——算法备赛
本文介绍了树形动态规划(DP)的基本概念和应用场景,重点分析了两道典型题目。两题均采用后序遍历自底向上求解,体现了树形DP处理子结构问题的优势。
2026-02-20 22:48:47
843
原创 029动态规划之划分型DP——算法备赛
本文介绍了划分型动态规划(DP)的应用场景和解题思路。主要内容包括: 划分型DP的基本概念:给定数组,求满足条件的划分子数组方案或可行性判断,通常定义f[i]表示前i个元素能否划分。 数组有效划分问题:通过检查最后2或3个元素是否满足相等或连续递增条件,使用DP判断整个数组能否有效划分。 单调队列优化DP:用于优化特定形式的DP方程,通过维护单调队列快速找到窗口内的最优值。以"最多k个连续的子序列最大和"问题为例,展示了如何应用单调队列优化。 极差分划问题:统计极差不超过k的分割方案数。
2026-01-26 13:20:13
987
原创 JS原型链总结
原型链是 `JS` 实现**继承**的核心机制:当访问一个对象的属性 / 方法时,JS 引擎先在对象自身查找;若找不到,则通过 `[[Prototype]]` 向上查找其原型对象;若原型对象仍找不到,继续向上查找原型的原型,直到 `Object.prototype`;若最终仍未找到,返回 `undefined`(方法则报错 `xxx is not a function`)。这条由 `[[Prototype]]` 串联的链式结构,就是**原型链**。
2025-12-20 14:00:42
882
原创 028动态规划之字符串DP——算法备赛
给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。定义dp[i][j]表示子串[i,j]是否是一个回文串,它可以由得到.
2025-12-01 21:32:05
1116
原创 027动态规划之矩阵DP——算法备赛
在一个由'0'和'1'组成的二维矩阵内,找到只包含'1'的最大正方形,并返回其面积。我们用dp(i,j)表示以(i,j)为右下角(选择右下角作为标识,是因为前面遍历时已求出对应dp),且只包含 1 的正方形的边长最大值。如果我们能计算出所有dp(i,j)的值,那么其中的最大值即为矩阵中只包含 1的正方形的边长最大值,其平方即为最大正方形的面积。求解dp(i,j)(i,j)dp(i,j)(i,j)dp(i,j)(i,j)dp(i,j)
2025-12-01 21:11:30
802
原创 026动态规划之跨步DP——算法备赛
求出从起点走到终点的心情值的最小值 (min) 和最大值 (max) ,所有可能的心情一定在[min,max]区间之间。也就是说,所有可能的心情值一定是连续的。假设求得最小值min,最大值max,那么说明min是多选择了-1,或少选择了1,由于向前跳跃的步数是连续的1或2,对于多选择了-1,minmin我们可以定义dp,记录到达i点的最小值与最大值,tar。
2025-12-01 20:53:52
1116
原创 025动态规划之组合方案——算法备赛
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。定义dp[i]为组成金额 i 所需最少的硬币数量,转移方程应为Cj为第j个硬币的价值枚举最后一个硬币的价值为Cj( Cj<=i ),剩余需取价值为 i-Cj 的硬币,而dp[i-Cj]已经求出,只需找到枚举的Cj 导致dp[i-Cj]最小即可。
2025-11-23 13:17:10
886
原创 Promise详解
1.全面梳理JS异步编程Promise方案,详细解读Promise标准的方方面面的细节,分析Promise解决回调地狱的优势2.总结async/await语法糖对Promise传统编程方案的优化。
2025-11-23 12:49:14
1075
原创 024动态规划之经典背包——算法备赛
背包问题一般给定物品集合,和指定背包,要求怎样将物品装入背包的方案最优,根据条件的不同,可以将背包问题分为以下几大类。
2025-11-20 14:29:20
898
原创 023数据结构之线段树——算法备赛
本文介绍了线段树的基本概念与应用。线段树是一种高效处理区间查询和修改问题的数据结构,结合了分治法和二叉树结构。文章详细讲解了线段树的定义、构建方法(以求和为例)、查询操作以及类模板封装(以区间最大值为例)。通过示例说明了线段树在求解区间最值、区间和等问题中的优势。
2025-11-01 16:55:36
1130
原创 022数据结构之树状数组——算法备赛
树状数组是一种高效处理动态数组区间和的数据结构,利用二进制特性实现O(logn)的单点修改和前缀查询。其核心思想是通过维护特殊数组tree,避免传统前缀和数组的连带修改问题。关键操作包括lowbit计算、单点更新和前缀求和,适用于逆序对统计等偏序问题。通过离散化处理大数值范围,树状数组能有效解决空间限制问题,在算法竞赛和数据处理中广泛应用。
2025-10-24 22:10:36
845
原创 021数据结构之并查集——算法备赛
主要处理一些不相交集合的合并问题将编号分别为1-n的n个对象划分为不相交集合,在每个集合中选择其中某个元素代表所在集合。。
2025-10-23 20:38:12
976
原创 020数据结构之优先队列——算法备赛
这里的优先队列其实是官方的说法,它的底层是堆(一种二叉树结构),很多编程语言会将其封装后对外暴露,API类似队列(都有入队,出队,获取队头等操作)。以C++中的优先队列为例,队头总是最大(默认)或最小值。更多API详情,这里不再详述。
2025-10-21 22:30:18
930
原创 019数据结构之栈——算法备赛
本篇文章展示数据结构——栈在解决实际问题中的具体运用,主要介绍【左右更小/更大值】解题模型和【最小字典序】解题模型。
2025-10-20 20:17:06
1150
原创 018数据结构之队列——算法备赛
我们将保留的数字尾插在一个双端队列中,队列中的每一个数对应所求的每一位,每次遍历到一位数字,将它与队列尾部的数字比较,较小的话,队列尾删,直到该数字大于队列尾部,入队。判断两个正整数的大小关系,先看位数,位数相同,从左往右看第一个不同的数字,该位数字小的则小,例123467<123589;个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。使用栈模拟删除的操作,使用队列返回最终得到的字符串,所以选择双端队列。位数字,使得剩下的数字最小。初步设想:可以设计一个双端队列,每天将遗忘秘密的人。
2025-10-19 22:02:43
638
原创 Linux——命令基础
本文展示Linux操作的基础,包括各种基础命令:文件系统命令、Vim编辑器的使用、系统查看命令、用户与权限命令、网络操作命令、软件包命令
2025-10-11 07:36:36
418
原创 JS比较性总结
本文主要总结JS中各种相似概念:1.NaN与null与undefined2.==与===3.字符串与数字的互相转换4.密封与冻结5.函数的直接调用与构造调用6.类的构造器与函数的构造调用7.function函数与箭头函数
2025-09-24 06:32:35
606
原创 你真的懂内部类吗?
`java内部类`是指一个类的内部定义的类,java支持多种类型的内部类,包括`成员内部类`、`局部内部类`、`匿名内部类`、`静态内部类`。内部类可以访问其外部类的成员和方法,甚至包括私有成员。(**外部类是相对而言**,在哪个类的内部,那个类就是此内部类的外部类)
2025-08-18 23:49:43
819
转载 设计模式的前奏——六大设计原则
六大设计原则设计原则是指导软件设计的一系列准则和规范,旨在帮助开发人员创建高质量的代码。这些原则强调代码的可维护性、可扩展性和灵活性,减少系统的复杂性和提高代码的可理解性等。
2025-08-15 22:50:27
120
原创 makedown语法的Typora使用文档
本文包括MakeDown语法编辑器Typora关于标题、文字、线、列表、区块、链接、表格、数学公式、样式、图标等的使用文档。
2025-07-25 00:18:51
942
原创 Git一本通
1.认识什么是GIt2.Git的基础命令,深入理解版本节点,分支3.远程仓库gitee的使用4.撤销操作5.在新版IDEA(2024.2.3)中使用Git的详细教程
2025-07-12 22:17:20
1352
原创 java中的多线程
Java多线程摘要: Java多线程允许程序"同时"执行多个任务,实际上是CPU快速切换执行不同线程实现的并发效果。Java提供了三种实现多线程的方式:(1)继承Thread类 - 简单但扩展性差;(2)实现Runnable接口 - 更灵活,支持lambda简化代码;(3)实现Callable接口 - 能获取线程执行结果。多线程编程需要注意线程安全问题,可以通过锁、并发工具等机制保证执行顺序和结果一致性。Thread类提供start()启动线程、join()等待线程完成、sleep()暂
2025-06-24 16:21:37
670
原创 阿里云OSS对象云储存入门操作
摘要:本文介绍了阿里云OSS对象存储服务的使用方法,主要包括三个步骤:1) 创建OSS数据桶;2) 创建AccessKey并进行授权管理,强调使用RAM用户而非主账号创建AccessKey,并遵循最小权限原则等安全实践;3) 项目集成OSS服务,提供了Java SDK示例代码,演示了创建存储空间、上传下载文件等基本操作。文中还详细说明了AccessKey的组成和安全使用规范,推荐采用STS临时凭证方案,以确保云存储服务的安全使用。
2025-06-20 21:46:11
1551
原创 017搜索之深度优先DFS——算法备赛
深度优先遍历是用递归实现的,预定一条顺序规则(如上下左右顺序) ,一直往第一个方向搜索直到走到尽头或不满足要求回溯到上一个叉路口按第二个方向继续搜索,以此类推。
2025-06-01 23:12:30
1018
原创 016搜索之广度优先BFS——算法备赛
广度优先搜索是一种逐层遍历的方式,是图论,树论的基本搜索方式,在决策类问题上也有应用。算法的关键是准备一个`节点队列`,每遍历一个节点将其所有未访问的子节点(或所有的邻接节点)入队,遍历完一个节点后及时从队列中出队。当队列为空遍历结束。BFS作为基础搜索算法,其逐层扩散的特点在很多高级算法有着广泛的应用,如`Djstra`算法就是用优先队列实现的`BFS`。
2025-05-27 21:52:10
1553
原创 015枚举之滑动窗口——算法备赛
给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。见代码注解。
2025-05-12 19:19:52
1537
原创 Windows——powershell批处理(io校验)
在刷题时,时常回想,OJ平台是如何校验竞赛队员提交的代码的,OJ平台并不看代码,而是使用“黑盒测试”,用测试数据来验证。对于每题,都事先设定了很多组输入数据(datain)和输出数据(dataout),OJ主要是看输入datain,看产生的输出是否与dataout一致。如果需要一次性知道自己的所有测试输入数据是否能得到正确输出,一个一个测试就太慢了,批处理操作就能很好解决这个问题。本篇文章主要介绍一下这个ioCode小项目,主要用于批处理校验输入输出,搭建本地的评测平台。
2025-05-07 21:52:06
1261
原创 014枚举之指针尺取——算法备赛
枚举是数据结构与算法中基本的操作,常用于解决序列的区间问题。算法界将"双指针"视为其重要分支,类似地当然还有"三指针",“四指针”,最常见的还是“双指针”,我认为它们应统称为“指针尺取”。双指针无疑就是定义两个变量记录内存空间位置(一般为线性数组下标)来进行枚举,常见的枚举策略有“反向扫描”,“同向扫描”。
2025-05-05 20:56:18
1070
空空如也
gtk4.0在VS2022中无法运行
2024-01-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2