- 博客(44)
- 收藏
- 关注
原创 算法学习的规范性和可持续性
一段优秀的代码一定是规范的,所以从头开始养成一个良好习惯,有些人虽然解题快,但不规范的代码编写会在以后工作中造成很多麻烦,并且这样也不优雅,作为程序员我们应该时刻保持一个规范且优雅的姿态,做到保质又保量。有些人可能刷到 300 道就悟了,有些人可能刷到 1000 题才开始有了思考的能力。没有捷径,刷题亦是如此,特别是一些小伙伴觉得解题解对了就以为自己会了,但时间一长又忘了。有些同学浪费了快 1 年,刷了五百多题才得出这个结论。大多数同学没有思路直接看题解和代码,单纯默写,不去理解,就无法有突破。
2025-06-12 17:09:49
24
原创 迭代优化法解决问题实例
如果当前节点 u 为叶子节点或者当前节点的子节点已经全部遍历过,则从栈中弹出节点 u ,并记录节点 u 的值。例如 u 的子节点从左到右为 v1 , v2 , v3 ,那么入栈的顺序应当为 v3, v2 , v1,这样就保证了下一个遍历到的节点(即 u 的左侧第一个孩子节点 v1 )出现在栈顶的位置。随后每次我们找到栈顶节点 u ,如果当前节点的子节点没有遍历过,则应该先把 u 的所有子节点从右向左逆序压入栈中,这样出栈的节点则是顺序从左向右的,同时对节点 u 进行标记,表示该节点的子节点已经全部入栈;
2025-06-11 17:15:43
187
原创 递归法解N叉树的后序遍历
递归思路比较简单,N 叉树的前序遍历与二叉树的后序遍历的思路和方法基本一致,可以参考「145. 二叉树的后序遍历」的方法,每次递归时,先递归访问每个孩子节点,然后再访问根节点即可。
2025-06-11 12:05:38
104
原创 最短回文串解题思路分享
本题目可以转换为求给定字符串从首字母开始的最长回文子串(然后将余下的 reverse,insert 到头部就可以),而求从首字母开始的最长回文子串,可以用 Manacher 算法,也可以将 str 反转以后拼接到 str 尾部,使用 KMP 的求 next 数组,这样 next 数组最后一个值就是从首字母出发的最长回文子串长度。解题方法千变万化,重在思考的过程,并非答案。许多实战过的小伙伴相信也在面试大厂的岗位时,了解面试官其实并不关心最终结果,而是需要你提供自己的理解和思路。
2025-06-10 16:01:26
204
原创 回溯法求最大值的子集数目
我们定义一个搜索函数,参数 pos 表示当前下标,orVal 表示当前下标之前的某个子集按位或值,这样就可以保存子集按位或的值的信息,并根据当前元素选择与否更新 orVal。方法一的缺点是,计算不同状态的按位或的值,都需要消耗 O(n) 的时间。每个长度为 n 比特的状态的按位或的值,都是可以在长度为 n−1 比特的状态的按位或的值上计算出来的,而这个计算只需要消耗常数时间。状态数一共有 O(20 + 21 + ... + 2n) = O(2×2n) = O(2n) 种,每次计算只消耗常数时间。
2025-06-10 09:28:00
235
原创 位运算求最大值的子集数目问题
记 n 是数组 nums 的长度,数组中的每个元素都可以选取或者不选取,因此数组的非空子集数目一共有 (2n-1) 个。可以用一个长度为 n 比特的整数来表示不同的子集,在整数的二进制表示中,n 个比特的值代表了对数组不同元素的取舍。第 i 位值为 1 则表示该子集选取对应元素,第 i 位值为 0 则表示该子集不选取对应元素。求出每个子集的按位或的值,并计算取到最大值时的子集个数。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-06-09 16:12:41
175
原创 前序遍历法求字典树的目标节点
可以按照层次遍历子树,firsti 指向第 i 层的最左侧的孩子节点, lasti 指向第 i 层的最右侧的孩子节点,根据推理可以知道: firsti = 10 × firsti − 1 ,lasti = 10 × lasti − 1 + 9 ,第 i 层共有 lasti − firsti + 1 个节点,由于所有的节点都需要满足小于等于 n ,所以第 i 层的最右侧节点应该为 min(n,lasti) ,不断迭代直到 firsti > n 则终止向下搜索。依次重复上述操作直到找到 k 小的节点即可。
2025-06-09 08:25:36
223
原创 Maya2026安装包+教程百度云盘下载与安装教程指南
STL文件导出更新:Maya 2026引入了新的单位转换对话框,允许用户在导出STL文件时根据需求设置单位,确保数据在导入和导出过程中能够按预期进行转换,提高了处理的灵活性和准确性。10、打开破解文件夹,然后里面有2个方法,大家自行选择(而接下来我们将以最简单的方法1为例进行讲解,方法2中有操作方法,想要以这个方法的请跟着说明操作)下载途径:如果对Maya的学习和使用感兴趣,想要下载学习的话,可以去Maya的官方网站或者一些专业的软件下载平台找找看。7、选择其他组件,默认勾选,然后点击安装。
2025-06-08 18:37:54
1644
原创 3Ds Max2026安装包+教程百度云盘下载与安装教程指南
是3D Studio Max的简称,有时候也被大家称为3Dmax,它是一款专业三维建模、动画和渲染软件,广泛应用于影视、游戏、建筑可视化等领域,是行业标杆级的三维创作工具。目前来看,3Ds Max 2024、2025是用的比较多的版本,而3Ds Max 2026是目前最新推出的版本。下面,就由小编带领大家从以下几个方面来认识、了解和熟悉这款好用的三维创作工具吧!
2025-06-08 10:58:12
1325
原创 模拟法解题的思路与算法分享
时间复杂度:O(n) ,其中 n 为数组 ops 的大小。遍历整个 ops 需要 O(n)。空间复杂度:O(n)。变长数组最多保存 O(n) 个元素。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-06-07 18:14:07
232
原创 好子集的数目之解决方案
我们可以通过硬编码的方式把 [1, 30] 中的整数按照上述分类,也可以先预处理出所有 [1, 30] 中质数 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,再通过试除的方式动态分类。2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 26, 29, 30 :这些数均不包含平方因子,因此每个数在好子集中至多出现一次;如果 nums 的一个子集中,所有元素的乘积可以表示为一个或多个 互不相同的质数 的乘积,那么我们。
2025-06-06 17:51:11
901
原创 直接判断法求自除数的方法
例如,128 是一个 自除数 ,因为 128 % 1 == 0 ,128 % 2 == 0 ,128 % 8 == 0。给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的自除数。自除数是指可以被它包含的每一位数整除的数。自除数 不允许包含 0。
2025-06-06 10:42:39
199
原创 寻找比目标字母大的最小字母
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target ,请你寻找在这一有序列表里比目标字母大的最小字母。
2025-06-05 21:24:48
122
原创 找到每一个单词+模拟的思路和算法
如大家所知,我们可以对给定的字符串 sentence 进行一次遍历,找出其中的每一个单词,并根据题目的要求进行操作。在寻找单词时,我们可以使用语言自带的 split() 函数,将空格作为分割字符,得到所有的单词。为了节省空间,我们也可以直接进行遍历:每当我们遍历到一个空格或者到达 sentence 的末尾时,我们就找到了一个单词。当我们得到一个单词 w 后,我们首先需要判断 w 的首字母是否为元音字母。我们可以使用一个哈希集合 vowels 存储所有的元音字母 aeiouAEIOU,这样只需要判断 w 的首
2025-06-04 15:50:48
308
原创 数学 + 递归方法解算法题分享
由于在第 k' 名小伙伴离开圈子之后,圈子中剩下的 n−1 名小伙伴从第 k'+1名小伙伴开始计数,获胜者编号是从第 k'+1名小伙伴开始的第 x 名小伙伴,因此当圈子中有 n 名小伙伴时,获胜者编号是 f(n,k)=(k′modn+x−1)modn+1=(k+x−1)modn+1。由于 1≤k′≤n,因此 0≤k′−1≤n−1。又由于 k−k′ 是 n 的倍数等价于 (k-1)-(k'-1)是 n 的倍数,因此 k′−1=(k−1)modn,k′=(k−1)modn+1。令 x=f(n−1,k)。
2025-06-04 10:57:32
286
原创 算法中后继者问题的示例分享
为了找到二叉搜索树中的节点 p 的后继节点,最直观的方法是中序遍历。由于只需要找到节点 p 的后继节点,因此不需要维护完整的中序遍历序列,只需要在中序遍历的过程中维护上一个访问的节点和当前访问的节点。如果上一个访问的节点是节点 p ,则当前访问的节点即为节点 p 的后继节点。如果节点 p 是最后被访问的节点,则不存在节点 p 的后继节点,返回 null。空间复杂度:O(n) ,其中 n 是二叉搜索树的节点数。时间复杂度:O(n) ,其中 n 是二叉搜索树的节点数。
2025-06-03 19:36:16
274
原创 递归法求二进制数之和
例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1 ,那么它表示二进制数 01101 ,也就是 13。给出一棵二叉树,其上每个结点的值都是 0 或 1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。后序遍历的访问顺序为:左子树——右子树——根节点。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。如果节点是非叶子节点,返回它的左子树和右子树对应的结果之和。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!如果节点是叶子节点,返回它对应的数字 val。
2025-06-03 08:52:13
216
原创 效率办公Office 2003-2024网盘下载与安装激活指南
说起,相信大家都不会觉得陌生。不管是文字处理工具Word,还是电子表格程序Excel,抑或是幻灯片制作工具PowerPoint,都是大家日常工作和学习不可或缺的。下面就与大家来聊聊这款效率办公软件!目前来看,Office 2021是用的比较多的版本,而Office 2024是目前最新推出的版本。下面,就由小编带领大家从以下几个方面来认识、了解和熟悉这款好用的办公工具吧!
2025-06-02 11:13:43
1237
原创 浅谈简历制作的四点注意事项
因为其它文件格式兼容性不高,可能会使简历模板变形,有些同学在导出时简历格式不正确,那么 HR 在打开你简历的时候可能会出现乱码等尴尬的现象,所以最好输出为 PDF 格式,省心又简洁。时间以倒序的方式呈现会更好,最近的项目经历、最高的学历要放在最前面。一封合格的简历字数大概在 350 词 – 650 词之间,少于 350 词的简历显得空空荡荡,述无可述,容易让人觉得项目经历不足。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!如大家所了解的,一份工作,往往是从制作一份简历开始。
2025-06-01 19:28:34
226
原创 随机选择法找出重复N次的元素
我们可以每次随机选择两个不同的下标,判断它们对应的元素是否相等即可。如果相等,那么返回任意一个作为答案。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-05-30 11:48:35
194
原创 找到字符串中所有字母异位词解决方案
初始化 differ 时,出现在窗口中的单词,每出现一次,相应的值增加 1 ,出现在 words 中的单词,每出现一次,相应的值减少 1。然后将窗口右移,右侧会加入一个单词,左侧会移出一个单词,并对 differ 做相应的更新。窗口移动时,若出现 differ 中值不为 0 的键的数量为 0 ,则表示这个窗口中的单词频次和 words 中单词频次相同,窗口的左端点是一个待求的起始位置。我们记 words 的长度为 m,words 中每个单词的长度为 n,s 的长度为 ls。
2025-05-30 09:00:19
320
原创 动态规划法在解决实际问题中的应用
对于 1≤i<n1 ,第 i 号房子和第 i−1 号房子的颜色必须不同,因此当第 i 号房子被粉刷成某一种颜色时,第 i−1 号房子只能被粉刷成另外两种颜色之一。用 dp[i][j] 表示粉刷第 0 号房子到第 i 号房子且第 i 号房子被粉刷成第 j 种颜色时的最小花费成本。当只有第 0 号房子被粉刷时,对于每一种颜色,总花费成本即为将第 0 号房子粉刷成该颜色的花费成本,因此边界条件是:对于任意 0≤j<30 ,dp[0][j]=costs[0][j]。深度优先搜索这棵二叉树。
2025-05-29 18:33:48
154
原创 删除链表的倒数第N个节点的方法
双指针法,定义一个指针 fast 先向右移动 n 个节点,然后再定义一个指针 slow ,两个指针同时向右移动,直到 fast 指向链表的尾节点。此时 slow 指向的节点就是要删除的节点的前一个节点,将其指向下下个节点即可。给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!输入:1->2->3->4->5,n = 2。输出:1->2->3->5。
2025-05-29 12:00:02
117
原创 代码解决黑名单映射问题
这给我们一个启示,对于在 [0,n−m) 范围内的黑名单数,我们可以将其映射到 [n−m,n) 范围内的非黑名单数(白名单数)上。3.对于每个 [0,n−m) 范围内的黑名单数 b ,首先不断增加 w 直至其不在黑名单中,然后将 b 映射到 w 上,并将 w 增加一。考察一个特殊的例子:所有黑名单数全部在区间 [n−m,n) 范围内。此时我们可以直接在 [0,n−m) 范围内取随机整数。1.将 [n−m,n) 范围内的黑名单数存入一个哈希集合 black;2.初始化白名单数 w=n−m;
2025-05-29 08:24:37
249
原创 MySQL中事务并发的几类问题
不得不说,无论是常年与数据打交道的数据分析师和数据科学家,经常需要管理和维护数据库的数据库管理员,还是是需要了解嵌入式数据库的移动开发工程师,都免不了与。2.不可重复读:在一个事务中多次读取同一个数据时,结果出现不一致。3.幻读:在一个事务中使用相同的 SQL 两次读取,第二次读取到了其他事务新插入的行。1.脏读:一个事务可以读到另一个事务未提交的结果,所有的并发事务问题都会发生。4.丢失更新:所有事务依次逐个执行,所以可以解决并发事务的所有问题。1. 读未提交:什么都没做,上面的一个问题都没解决;
2025-05-28 11:54:39
268
原创 离散化算法的二分法应用
好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!的时间复杂度内找到该数值是整体数据中的第几个。在排序好的数组中对目标数值进行二分搜索,在。这里的二分法回归本源也是基于下标映射的原理。,只是实现是借助二分的形式。我们思考一个问题:其实。
2025-05-28 08:47:20
202
原创 程序员面试常见的问题总结分享
由于每个人对于每个系统的理解都不一样,涉及的业务以及遇到的问题也各不相同,因此可以引导面试官向你熟悉的知识点提问,尽量能避开你不熟悉的业务场景或技术方向。不同的公司或部门,面试的流程和侧重点都有较大的差异。有的公司一面上来就会让你手写算法题,而有的公司一面只会让面试官跟你聊一些技术和项目经验。在一边提问一边思考解决的过程中,哪怕一开始思路比较乱也别担心,面试官很多时候只是想看候选人在面试难题时是如何思考的,并不是一定要你答出来。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-05-27 08:06:19
206
原创 单调栈的例题与代码
共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。第一行包含整数 N ,表示数列长度。第二行包含 N 个整数,表示整数数列。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!1 ≤ 数列中的元素 ≤ 10^9。
2025-05-25 15:32:04
201
原创 栈模拟思路和算法解决行星碰撞问题
当行星 aster 存在且 aster < 0 ,栈顶元素非空且大于 0 时,说明两个行星相互向对方移动:如果栈顶元素大于等于 −aster ,则行星 aster 发生爆炸,将 alive 置为 false;重复以上判断直到不满足条件,如果最后 alive 为真,说明行星 aster 不会爆炸,则将 aster 入栈。,从左往右遍历行星数组 asteroids,当我们遍历到行星 aster 时,使用变量 alive 记录行星 aster 是否还存在(即未爆炸)。我们可以使用栈 st 模拟。
2025-05-25 08:01:31
118
原创 Hierholzer算法寻找有向图中的欧拉回路与欧拉路径
实际上,我们仍然可以使用 Hierholzer 算法寻找有向图中的欧拉回路与欧拉路径,只要从路径起点开始深度优先搜索即可。若所有节点入度等于出度,路径起点就是任意一个非零度节点,否则路径起点就是入度比出度少 1 的那个节点。另外,因为是有向边,因此 Hierholzer 算法不需要删除反向边。我们仍然使用下面这道基础例题^7完整地展示 Hierholzer 算法在有向图中的使用。直接使用当前弧优化的 Hierholzer 算法即可。本题的 C++ 代码如下。好了,今天的文章分享就到这里了,希望对大家的学习有
2025-05-24 21:16:14
185
原创 Hierholzer算法的代码执行演示
这正是 Hierholzer 算法流程中的步骤 2(检查是否存在其它回路),而且我们发现存在包含节点 2 的回路。可以看到,我们将回路 B 的倒序插在了(未完成的)回路 A 的倒序里。由于节点 1 此时不存在未被遍历的边,我们找到了一个包含节点 1 的回路 A,由于节点 2 此时不存在未被遍历的边,我们找到了一个包含节点 2 的回路 B,由于节点 1 此时不存在未被遍历的边,我们找到了一个包含节点 1 的回路,由于节点 2 存在未被遍历的边(2−4 与 2−5),因此对回路 A 的记录将暂停。
2025-05-24 14:59:51
388
原创 运用线程池管理和重用多个线程
在这个示例中,我们使用 Executors 工厂类创建了一个固定大小为3的线程池。然后,我们提交了 5 个任务给线程池执行,每个任务都是一个实现了 Runnable 接口的内部类。最后,我们调用线程池的 shutdown 方法关闭线程池。当任务执行结束后,该线程不会被销毁,而是继续保留在线程队列中,以便下一次任务需要执行时可以重用。线程池可以有效地减少线程的创建和销毁,提高系统的性能和稳定性。它包含了一个线程队列和一个任务队列,当一个新的任务需要执行时,线程池中的一个线程会从线程队列中取出,并执行该任务。
2025-05-23 14:23:06
101
原创 实现Runnable接口来创建线程
在 main () 方法中,我们创建了两个线程对象 thread 1 和 thread 2 ,并将MyRunnable 实例作为参数传递给它们。最后,我们调用 start () 方法启动这两个线程,实现了多线程执行任务的效果。在这个代码中,我们首先创建了一个实现了 Runnable 接口的类 MyRunnable ,然后在类中实现了 run() 方法,并在 run() 方法中编写了多线程任务代码。先让我们一起来看看。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-05-23 09:27:43
184
原创 运用爬山算法来寻找最优解
这里面的 neighbor() 函数用来产生当前解附近的解,因为解空间是连续的,所以当前解附近必定有离最优解更近的解,我们只需要找到个这个解并继续做迭代即可。假如地图中只存在一个最优解,那么迭代的结果必然是让当前解无限的接近最优解,所以只需要设置一个阈值,并判断当前迭代步长是否小于该阈值即可(这里可以选择一个比题目中要求的误差更小的值作为阈值)。在迭代时,算法只搜索当前解附近的位置,如果发现附近有一个更好的解,那么就将当前位置更新过去。下面是一个用爬山算法求解问题的例子,动画中展示了算法的搜索过程,以及。
2025-05-22 15:40:37
256
原创 奇数值单元格的数目
方法一:直接模拟思路和算法直接使用使用一个 n × m 的矩阵来存放操作的结果,对于 indices 中的每一对 [ ri , ci ] ,将矩阵第 ri 行的所有数增加 1 ,第 ci 列的所有数增加 1。在所有操作模拟完毕后,我们遍历矩阵,得到奇数的数目。另有一个二维索引数组 indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。
2025-05-22 10:57:00
195
原创 COMSOL 6.3中文安装包+教程百度云盘下载与安装指南
如大家所了解的,是一款基于有限元法的多物理场耦合仿真软件,它,起源于MATLAB的Toolbox,后发展为独立的通用仿真平台。目前来说,COMSOL 6.2和COMSOL 6.3是用的比较多的版本。
2025-05-21 14:38:59
1582
原创 并查集的算法思想分享
查找 ( A ,B ) - 查找,是否有任何路径连接两个元素 A 和 B 例:你有一组元素 S = { 0 ,1 , 2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 }。可以看到,如果元素之间是相互连通的(从一个节点可以到达另一个节点),那么他们在同一棵树里,或者说在同一个集合里,他们的父节点是相同的。合并 ( A ,B ) - 将 A 连接到 B 并通过将所有值等于 Arr[ A ] 的元素更改为 Arr[ B] 来合并具有 A 和 B 元素。A是B的朋友,B是C的朋友,D是E的朋友。
2025-05-20 20:16:14
135
原创 用代码思路解决玩筹码游戏问题
第 i 个筹码的位置是 position[i]。我们需要把所有筹码移到同一个位置。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!返回将所有筹码移动到同一位置上所需要的最小代价。
2025-05-19 11:22:27
262
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人