- 博客(27)
- 收藏
- 关注
原创 机器学习的数学基础——泛函分析初步
接下来对之前定义的度量空间补充内积的定义,使得之前定义的度量、范数建立在内积之上。接下来对之前定义的度量空间补充范数的定义,使得之前的度量定义可以由范数导出。不满足平行四边形等式,所以不是内积空间,当然也不是 Hilbert 空间。不满足平行四边形等式,所以不是内积空间,当然也不是 Hilbert 空间。这样得到的度量空间称为序列空间。:完备的赋范空间(以范数导出的度量来考察完备性)对定义了内积的实向量空间,有交换律。:完备的内积空间(以内积定义的度量来考察完备性)这样得到的度量空间称为序列空间。
2025-11-11 17:10:07
696
原创 一道面试题:一个字符串,从首尾取字符拼成字典序最小的字符串
文章摘要:本文针对构建字典序最小字符串问题,提出了一种优化的贪心算法。该算法通过每次选择首尾较小字符来构建新字符串,当首尾字符相同时,深入比较内部字符决定选取方向。相比动态规划方法,该算法不需要额外空间。通过Java实现验证了算法的有效性,适用于字符串处理场景如金山办公面试题中的需求。算法核心在于正确处理首尾字符相等的边界情况,确保字典序最小化。
2025-11-08 17:08:32
74
原创 机器学习的数学基础——向量与导数
摘要:本文介绍了机器学习和深度学习中常见的向量求导方法。首先给出向量导数的定义,说明其与梯度的等价性。然后推导了两个重要公式:(1)线性函数μᵀx对向量x的导数为μ;(2)二次型xᵀAx的导数为2Ax(A为实对称矩阵)。推导过程中详细展示了分量计算步骤,并强调了矩阵对称性的作用。这些结果为后续机器学习模型的优化提供了数学基础。
2025-11-04 22:21:10
443
原创 一道笔试题:乘二和减一两种操作
本文介绍了一种求解整数转换最少操作次数的贪心算法。题目要求在给定两个正整数时,通过乘2或减1操作将源数转换为目标数。算法采用逆向思维,从目标数倒推:当目标数大于源数时,若目标数为偶数则除2,为奇数则加1;当目标数小于源数时直接累加差值。虽然该贪心策略缺乏严格数学证明,但在实际应用中能有效解决问题,时间复杂度优于BFS方案。文中通过具体示例分析了操作次数的比较,并提供了Java实现代码,展示了贪心算法在类似问题中的实用性。
2025-10-15 15:47:29
170
原创 一道笔试题:最长的乘积是完全平方数的子数组
摘要:本文提出了两种解决最长乘积为完全平方数的子数组问题的方法。第一种方法通过分解质因数并检查质因子指数奇偶性,但效率较低,仅通过10%测试用例。第二种改进方法利用埃拉托斯特尼筛法预计算质数,为每个质数分配随机64位整数,通过异或运算构建掩码和前缀异或数组,使用哈希表记录首次出现位置以快速定位符合条件的子数组。该方法在O(n)时间复杂度内解决问题,但存在极小概率的假阳性结果。代码实现展示了完整的筛法预处理、掩码计算和前缀异或处理过程。
2025-10-15 15:09:40
133
原创 一道笔试题:数组分段
摘要:该文分享了2026届秋招米哈游游戏运维开发C卷的一道编程题解法。题目要求将整型数组分割为尽可能多的段,使相邻两段左段异或值不大于右段异或值。作者采用动态规划方法,定义dp[start][bound]表示从start开始以bound为异或下限的最大分段数。通过逆向遍历数组和预处理边界条件,尝试在O(n^2*128)时间复杂度内求解。但实际运行时因时间复杂度过高只通过部分测试用例,作者指出关键点在于需要判断dp[i+1][xor]>0以避免错误结果。
2025-09-28 20:26:33
192
原创 一道笔试题:求括号序列变成合法的所需最少交换次数
本文探讨了如何通过最少交换次数将不平衡的括号序列变为合法的问题。首先提出了一种基于BFS的解法,但由于时间复杂度高而无法通过大部分测试用例。随后介绍了一种更高效的贪心算法:通过维护平衡度变量,在遍历过程中统计需要交换的次数。文章进一步解释了该算法的正确性:通过移除已匹配的括号对,将问题简化为处理连续的右括号和左括号序列,从而确保每次失配只需一次交换即可。这种解法的时间复杂度为O(n),能够高效解决问题。
2025-09-28 11:43:31
258
原创 一道面试题:划分数组使每段元素和尽量小
摘要:本文针对照片上传优化问题,提出两种解决方案。给定n张顺序排列的照片和days天上传时间,要求确定每日最小相册大小限额。动态规划解法通过构建二维数组dp[i][j]表示从第i张照片开始,剩余j天时的最小限额,时间复杂度O(N^2M)。二分查找解法通过确定初始范围[最大单张照片,照片总和],利用feasible函数验证限额可行性,通过二分搜索找到最优解,时间复杂度O(NlogQ)。测试案例验证了两种方法的正确性,其中二分查找法更为高效。
2025-09-13 16:48:21
307
原创 常用图算法的 Java 实现
本文介绍了五种常用图算法及其Java实现:1. 堆优化的Dijkstra算法(单源最短路径):使用优先队列优化,时间复杂度O(ElogV),适用于无负权边的图。2. Floyd-Warshall算法(多源最短路径):动态规划实现,时间复杂度O(V^3),可处理负权边但无负权环的图。3. Kruskal算法(最小生成树):基于并查集实现,按边权重排序后逐步构建,时间复杂度O(ElogE)。4. Prim算法(最小生成树):类似Dijkstra,维护优先队列存储候选边,时间复杂度O(ElogV)。5. Kahn
2025-09-13 12:13:05
356
原创 一道面试题:连通图
摘要:题目要求根据用户注册的姓名和邮箱找出相关联的用户组。通过构建姓名和邮箱的双向图,使用深度优先搜索(DFS)遍历连通分量,将共享邮箱的用户分组。输入示例中Bob和Tom通过"bob@gl.com"关联,Tina单独成组。解决方案采用图论方法,避免了直接使用哈希表可能导致的错误,正确识别出用户间的关联关系。核心算法时间复杂度取决于图的节点和边数。
2025-09-12 20:02:22
293
原创 0-1 背包问题及其扩展
本文总结了多重背包问题的三种解法:1)二维动态规划,直接扩展0-1背包解法,时间复杂度O(NWM);2)一维动态规划优化空间,需遍历物品数量;3)二进制优化+一维DP,通过二进制拆分物品数量降低复杂度。文中提供了Java实现代码,包括基础0-1背包的二维和一维解法,以及多重背包的三种实现方式。重点讲解了二进制优化技巧,通过将物品数量拆分为等比数列来简化计算,使时间复杂度优化到O(NWlogM)。
2025-09-09 14:41:33
276
原创 已知一个数组,其中元素是1 ~ N 的整数去掉两个之后的结果,求缺失的两个数
摘要:本文介绍了一种使用异或运算查找数组中两个缺失数字的方法。通过计算1到N所有数字与数组中所有数字的异或值,得到两个缺失数字的异或结果。然后利用Brian Kernighan算法找到最右边的1位作为分组依据,将数字分为两组分别处理,最终求出两个缺失的数字。该方法高效且无需额外空间,时间复杂度为O(n)。
2025-09-09 10:44:31
122
原创 一道笔试题:方阵、回文、异或
摘要:本文提出了一个解决矩阵回文变换最小代价的算法。给定n×n方阵,通过异或操作使每行每列成为回文,求最小总代价。算法核心是将矩阵划分为对称元素组(四元组或二元组),独立计算每组的最小异或代价后累加。对于四元组,按位统计1的个数,取较小值累加;对于二元组,直接计算异或值。代码实现了该算法并验证了示例矩阵的结果。时间复杂度为O(n²)。
2025-09-06 11:12:26
249
原创 一道笔试题:卡片的分数和抽卡的机会
该问题采用贪心算法求解卡牌游戏最大得分。初始1次抽卡机会,每次抽卡消耗机会并获得对应分数及额外机会数。解题策略:1)优先抽取所有机会数大于0的卡牌(可增加剩余机会);2)将剩余0机会卡牌按分数降序排列;3)用剩余机会依次抽取高分卡牌。示例测试用例中,先抽前3张机会卡得6分并剩余2次机会,再抽最高分4分和3分卡,最终得分为10分。算法时间复杂度主要取决于排序步骤,为O(n log n)。
2025-09-06 00:34:34
115
原创 一道面试题:数轴上的广度优先搜索
警察知道某一小偷的位置,想要抓住他。警察和小偷都位于数轴上,警察起始位于点N(0≤N≤100000),小偷位于点K(0≤K≤100000)。2. 从X移动到2*X,每次移动花费一分钟 假设小偷没有意识到警察的行动,站在原地不动。警察最少要花多少时间才能抓住小偷?来自深圳元戎启行科技有限公司(Deeproute.ai)2025.9.5 后端开发工程师岗位的面试。典型的广度优先搜索问题,注意警察移动的界限,对 N 大于等于 K 的情况进行剪枝。1. 从X移动到X-1或X+1,每次移动花费一分钟。
2025-09-06 00:07:46
150
原创 一道笔试题:二分图的最大匹配
摘要:本文研究了一个单淘汰赛的赛程安排问题,要求通过合理安排对战组合,使得评分差不超过K的"观赏性高"比赛场次最大化。算法将选手按评分降序排列,每轮将前一半选手与后一半选手进行二分图匹配,采用匈牙利算法求解最大匹配。通过多轮迭代计算,最终确定最多可安排4场观赏性高的比赛(如78vs80、75vs85等)。该解决方案有效满足了比赛规则对观赏性的优化需求。
2025-08-30 13:36:51
156
原创 求解二叉树“子树”的最大权值和
摘要:针对二叉树路径与子树的混淆问题,提出动态规划解法。将子树定义为符合图论定义的树结构(允许分叉),要求至少包含一个节点且权值可正可负。算法对每个节点递归计算两种状态:不包含当前节点的最大子树和、包含当前节点的最大子树和。使用辅助函数maxPathSum2返回这两种状态值,主函数取两者较大值作为最终结果。通过分治策略处理左右子树情况,确保计算结果覆盖所有可能的子树组合。时间复杂度为O(n)。
2025-08-21 23:33:40
167
原创 低买高卖问题(有手续费的情形)
该文提出了两种解决带手续费的股票买卖最大利润问题的方法:动态规划法和非动态规划法。动态规划法使用两个状态数组dp0和dp1分别记录持有/不持有股票时的最大利润。非动态规划法首先识别价格趋势变化,记录各趋势段的累计差价,然后通过特定规则计算总利润。作者通过随机测试验证了两种方法结果一致,并指出非动态规划法中判断条件"profits.get(j)>=2"的等号不能省略,否则会存在反例。该方法在保证正确性的同时,为这类问题提供了动态规划之外的另一种解决思路。
2025-08-06 22:12:07
237
原创 一道趣题,利用数组元素到下标的映射
摘要:本文介绍了一种查找重复元素的算法,适用于元素值在[1,n]范围内且每个元素最多出现两次的数组。算法利用数组元素值作为下标,通过取负标记已访问元素,当发现目标位置已被标记时即找到重复元素。文章提供了Java实现代码,通过Scanner读取输入,使用Math.abs处理负数标记,时间复杂度O(n)且空间复杂度O(1)。该解法巧妙地利用了数组本身的空间来记录访问状态,避免了额外空间的使用。
2025-08-05 17:36:10
126
原创 从数组中选数,求满足同余条件的最大和(动态规划+迭代收敛)
从 n 个数选取若干个,使得其和模 k 同余 r,求出这样的最大和。对每个 r 都有一个最大和,如果不存在符合同余条件的选数方案,则将最大和设为 -1。来自 2025.5.9 游酷盛世科技(北京)有限公司 - 游戏服务端开发工程师笔试(如果我没记错的话)输入 n 和 k,以及 n 个数,对每个整数 r 满足。本题不同于常规的动态规划,需要不断迭代直至收敛。
2025-05-30 14:20:50
480
原创 会议室时间段分配问题(常规动态规划)
注意:时间用正整数表示,每个正整数代表对应点钟的一整个小时,例如 start 3 end 5 表示 3:00 - 5:59。来自2025.5.12星展科技管培实习生在线技术测评。输出:设计分配方案使会议的总人数最大,打印出最大人数。只有一个会议室,同一时间段内只能举行一场会议。输入:会议的开始时间、结束时间、人数。
2025-05-30 13:47:13
179
原创 境内CentOS服务器安装docker和拉取docker镜像网络问题解决方案
现在镜像的名字带前缀 docker.m.daocloud.io/library/,后面使用 docker run,docker stop 等命令也要带上这个前缀。实测这个镜像站有效,如果不使用镜像站会报出如下错误。拉取镜像站的 docker 镜像。安装 yum-utils 工具。替换成国内 Docker 源。安装 Docker CE。
2025-04-29 21:52:07
273
原创 输入n个数(允许有相同的数)和s,这n个数中有多少种组合满足和为s
这里把相同的数看作是互异的,例如输入数集为10个1,s为5,所求组合的数量为。我使用了一种“半暴力”的解法,实测超时,通过20%来自2025.4.27柠檬微趣笔试。
2025-04-29 21:28:39
155
原创 已知A,B,求有多少组X,Y满足X∧Y=A,X∨Y=B,X≤Y
考虑A,B,X,Y的二进制表示形式,由X∨Y=B知X和Y的最高位不可能比B更高,由X∧Y=A知X和Y的最高位不可能比A更低。我们将总位数定为A和B位数的最大值,逐位进行考察。,这种情况下不存在满足条件的X,Y。来自2025.4.27得物笔试题。利用这个结论写出程序。
2025-04-29 21:08:18
847
原创 栈与卡特兰数
栈的出栈顺序问题:有个元素,按照确定的先后顺序加入栈中,当栈中有元素时,可以从栈中移出若干元素,那么所有元素的出栈顺序一共有多少种?易知,当时,只有1种出栈顺序;当时,只有2种出栈顺序。对于更大的情况,寻找递推公式进行求解。设出栈顺序种类数的数列为。当时,这个元素分别用表示,排在前面的优先移入,对的各种移出情况进行分析:设,得到递推公式由和递推公式可得,说明的设定是自洽的。
2025-04-23 09:18:58
211
原创 Windows上用命令行查看端口占用并杀死进程
如果有输出,最后一列是占用端口的进程的进程号。如果无输出,说明端口未被占用。杀死指定进程号的进程,/F 表示强制终止。查看这个进程属于哪个程序。查看端口被哪个进程占用。
2025-04-23 08:38:11
613
原创 Eureka 自身注册 JMX 问题
微服务项目中,Eureka (server) 模块需要启动来构建注册中心,并进行自身注册。IDEA Run/Debug Configuration 中添加 VM Options。这样就能正常启动 Eureka了。
2025-03-16 21:03:51
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅