- 博客(15)
- 收藏
- 关注
原创 有趣的算法题之矩阵的特别乘积
题目来自牛客网,要求找出非负整数矩阵中,除了元素本身外,所在行和列元素乘积的最大值。解题思路是预先计算每行每列乘积,并记录0的个数,以优化计算过程,避免重复计算。通过遍历矩阵并考虑0的情况,最终找到最大值。
2024-06-14 12:00:00
1055
原创 有趣的算法题之字符串排序
该题目来源于牛客网,要求实现一个排序算法,将输入字符串中的字符按照字母表顺序排序,且不区分大小写,若大小写同时存在则保留原顺序,非英文字符位置不变。为达到此目的,我们需将字符统一处理为相同大小写,并引入字典序来表示字符在字母表中的位置。同时,使用字符的原先位置来处理大小写同时存在的情况。随后,设计排序算法,根据字典序和原先位置进行排序,以实现题目要求。通过这一思路,读者应能理解为何使用字典序和原先位置进行比较,并推导出实现过程。
2024-06-13 15:13:40
814
原创 有趣的算法题之合唱队
本文针对牛客网的算法题,提出了通过动态规划求解最少出列学生数的解题流程。首先,将问题转化为求最大合唱团人数,以简化计算。其次,分析了合唱队形的特点,即中心点左右两侧身高单调变化。然后,利用动态规划方法,通过两次遍历计算每个学生的递增和递减序列长度。接着,结合这些长度确定最大合唱团人数。最后,从总人数中减去最大合唱团人数,得到最少出列学生数,并输出结果。整个流程高效且条理清晰,适用于解决此类算法问题。
2024-06-12 12:00:00
1315
原创 有趣的算法题之购物单
王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:如果要买归类为附件的物品,必须先买该附件所属的主件,且每件物品只能购买一次。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强查到了每件物品的价格(都是 10 元的整数倍),而他只有 N 元的预算。除此之外,他给每件物品规定了一个重要度,用整数 1 ~ 5 表示。他希望在花费不超过 N 元的前提下,使自己的满意度达到最大。
2024-06-11 15:56:09
1293
原创 有趣的算法题之异或和的或
本算法题是异或和的和,来源于码题集。本文通过分析问题性质,我们发现无需知道具体划分方案,只需关注异或和的最小值。利用异或运算的特性,即任意区间若存在某一位为1的数,则该位异或和必为1。我们采用贪心策略,从最高位开始尽量让区间在该位上的异或和为0。通过计算前缀异或和,快速获取任意区间的异或结果。我们从高位到低位遍历每一位,检查前缀异或和在该位的情况,计算可划分的最大区间段数,并标记不可划分的前缀位置。最终,将所有位上的结果与初始答案做逻辑或运算,得到最终结果。
2024-06-10 18:01:32
1966
原创 有趣的算法题之机器人
本篇博客深入探讨了来自码题集的一道算法题,题目要求解析并执行一系列由前进(FD)、倒退(BK)和重复(REPEAT)动作组成的机器人指令。通过详细解释每个动作的含义和指令格式,本文展示了如何根据给定的指令字符串,计算出机器人最终离起点的距离。文章首先阐述了指令的基本结构和执行逻辑,随后通过示例展示了逐步解析和执行指令的过程,最后总结了该算法题的求解思路和方法。通过本文,读者可以深入了解此类指令解析问题的处理技巧,并提升对算法逻辑的理解和应用能力。
2024-06-09 10:30:00
2028
原创 有趣的算法题之工厂
本文介绍了码题集中一道难度黄金的算法题,题目为工厂,工厂每天会生产现有罐头总数 mod m 个罐头,问工厂是否会停产。客详细描述了如何分析这个问题,并给出了一个简洁的数学方法来快速判断工厂是否会在某一天停止生产。通过深入剖析取模运算的特性和循环模式,我们得出结论。
2024-06-08 23:57:57
407
原创 有趣的算法题之幸运的 3 ,购买数字
本篇博客深入探讨了两道富有挑战性的算法问题,展现了算法在解决数学问题中的独特魅力。首先,第一道问题要求在给定的 n 个数中,通过两两匹配的方式,最大化匹配后得到的 3 的倍数的数量。我们深入剖析了每个数的各位数字之和与 3 的关系,提出了一种高效的匹配策略,从而实现了目标的最优化。接着,第二道问题是一道关于回文数的题目。小码哥希望在有限的零花钱 n 元内,购买到最大的回文数。我们通过分析回文数的构造特点,提出了一种从低位到高位逐步构造最大回文数的方法,并确保了所构造的回文数不超过小码哥的预算。
2024-06-07 18:00:01
1158
原创 深入浅出 Java 面试题之 synchronized 锁升级原理
本文通过档案馆的故事生动阐述了synchronized锁的升级原理。起初,档案馆依赖馆长的记忆管理访问,如同偏向锁简化常客访问。随着访客增多,引入轻量级锁机制,实现公平竞争和等待优化。面对热潮,重量级锁确保秩序和资源有效利用。这些锁机制的灵活运用,既保障数据安全,又提升多线程编程的效率。
2024-06-06 15:10:21
919
原创 小白讲给萌新的小故事之synchronized 和 volatile 的区别是什么?
通过夫妻二人共同管理家庭财务,将钱存入保险柜。面对紧急用钱情况时,丈夫提出来的解决方法为例,阐释了synchronized和volatile的区别。前者确保线程独占资源,避免数据不一致;后者保证线程可见最新值,但操作可能非原子。故事中夫妻二人根据实际情况选择合适方法,既保障财务安全又提高效率,共同维护家庭幸福。
2024-06-05 16:15:54
460
原创 Ubuntu 有线连接消失(已解决)
今天打算连接 Ubuntu 系统进行远程开发的,发现连接不上,看了一下 Ubuntu 系统发现有线连接图标找不到了。可以尝试删除 NetworkManager 的缓存文件。或者重启网络接口或网络服务。如果板有线网卡的型号和系统中网卡的驱动不匹配,可能需要安装额外的驱动程序。
2024-06-04 15:53:08
6317
1
原创 模式识别实验-高斯核支持向量机(SVM)在手写字符识别中的应用
支持向量机是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,通过引入核函数,SVM可以处理非线性分类问题。高斯核(RBF核)是一种常用的核函数,能够将数据映射到高维空间,使得原本线性不可分的数据变得线性可分。
2024-06-02 12:00:00
752
原创 机器学习中 PCA,LDA 和 LLE 三种降维算法实验对比
PCA是一种无监督的线性降维方法。它通过对原始特征空间进行正交变换,将原始特征转换为新的线性无关变量,即主成分。这些主成分按照方差大小进行排序,通常选择方差较大的前几个主成分来代表原始数据的主要特征。
2024-06-02 12:00:00
791
原创 通俗易懂回溯法求解旅行售货员问题
如果输入的编如果输入的编号不合法,提示用户重新输入,并继续下一次循环。校验两次输入的城市是否相同,提示用户不能输入同个城市,并重新输入。将输入的距离值保存在二维数组disArray的对应位置,同时考虑到距离的无向性,也保存对称位置的值。因此,我们可以在生成路径的过程中,通过比较部分路径的当前距离与已知的最短距离来提前终止一些显然不可能得到更优解的搜索分支,减少搜索空间,提高算法效率。当递归函数返回时,表示当前路径的所有可能性都已探索完毕,此时需要将最后一个添加的城市从路径中移除,以便尝试其他可能性。
2024-06-01 16:05:34
2218
1
原创 简单明了动态规划求解 0-1 背包问题
0-1背包问题是一个经典的优化问题,其目标是在给定一系列物品和每个物品的价值及重量的条件下,选择物品放入背包,使得背包中物品的总价值最大,同时不超过背包的总承重。每个物品只能选择放入背包或不放入背包,因此称为0-1背包问题。0-1背包问题的求解思路主要基于动态规划。动态规划通过将问题分解为更小的子问题,并保存这些子问题的解以避免重复计算,从而高效地解决优化问题。
2024-06-01 15:57:12
1072
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人