自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 3622.判断整除性

摘要:该算法判断一个正整数n是否能被其数字和与数字积之和整除。通过分解n的各位数字,计算数字和sum与数字积prod,然后检查n是否能被(sum+prod)整除。若能整除返回true,否则返回false。代码使用循环分解数字,并考虑了乘积可能较大的情况。

2025-08-27 21:57:01 372

原创 3000.对角线最长的矩形的面积

本文介绍了一个求解矩形对角线最长面积的问题。给定一个二维数组dimensions,其中每个元素表示矩形的长和宽,要求返回对角线最长的矩形面积;若对角线相同则返回面积最大的矩形。作者通过遍历数组,计算每个矩形对角线长度的平方(避免开方运算),并维护两个变量:当前最大对角线平方和对应的最大面积。时间复杂度为O(n),空间复杂度为O(1)。该算法高效地解决了问题,通过比较对角线平方和面积来确保正确性。

2025-08-26 22:55:42 207

原创 498.对角线遍历

本文介绍了一种对角线遍历矩阵的算法。通过观察发现,同一对角线上的元素满足行号i与列号j之和i+j为定值k。算法将k从0遍历到m+n-2,根据k的奇偶性决定遍历方向:偶数k从左下往右上(列号j从小到大),奇数k从右上往左下(列号j从大到小)。通过计算有效列范围max(k-m+1,0)≤j≤min(k,n-1)来避免越界,直接按顺序将元素存入结果数组。该方法无需反转操作,效率较高,时间复杂度为O(mn)。

2025-08-25 23:29:47 402

原创 1493.删掉一个元素以后全为 1 的最长子数组

摘要:本文解决了一个二进制数组问题,要求在删除一个元素后找出最长连续1子数组的长度。通过滑动窗口技术,将问题转化为寻找最多包含1个0的最长子数组。核心思路是维护窗口内0的计数,当0超过1个时收缩左边界,并实时更新最大有效长度。特别处理了全1数组必须删除一个元素的边界情况。该算法时间复杂度为O(n),空间复杂度O(1),高效地解决了问题。(149字)

2025-08-24 21:23:44 217

原创 1513.仅含 1 的子串数

该问题要求统计二进制字符串中所有全1子串的数量。作者使用双指针法遍历字符串,当遇到连续的1时,计算该连续段中所有可能子串的数量(公式为n*(n+1)/2),并累加到结果中。由于结果可能很大,每次累加后进行模运算(10^9+7)。时间复杂度为O(n),空间复杂度为O(1)。该方法高效地通过滑动窗口识别连续1的区间,利用数学公式快速计算子串数目。

2025-08-23 21:22:36 176

原创 3195.包含所有 1 的最小矩形面积 I

题目要求在二维二进制数组中找到能覆盖所有1的最小矩形面积。解题思路是遍历数组,记录出现1的最小和最大行号、列号,从而确定矩形边界。若没有1则返回0。关键点在于实时更新四个边界变量,最终计算矩形宽度和高度时需+1(因为行列索引从0开始)。该算法时间复杂度为O(mn),空间复杂度为O(1)。

2025-08-22 20:37:19 205

原创 1504.统计全 1 子矩形

本文提出了一种计算二进制矩阵中全1子矩形数量的高效算法。通过逐行处理,将二维问题转化为一维柱状图问题。算法维护一个单调栈来跟踪柱状图高度,并动态计算以每个位置为右下角的子矩形数量。关键步骤包括:1)更新每列的连续1高度;2)使用单调栈统计有效矩形,通过累加高度×宽度来计算结果。该方法时间复杂度为O(mn),空间复杂度为O(n),适用于大规模矩阵计算。

2025-08-21 23:50:18 579

原创 1277.统计全为 1 的正方形子矩阵

本文介绍了一种统计全1正方形子矩阵数量的动态规划方法。算法通过逐行扫描矩阵,使用一维数组优化空间复杂度。关键思路是:以每个位置为右下角时,其最大正方形边长取决于左、上、左上三个方向的最小值加1。时间复杂度O(mn),空间复杂度O(n)。最终解通过累加所有位置的dp值得到,因为边长k的正方形包含k个不同大小的子正方形。该方法高效地解决了全1正方形统计问题。

2025-08-20 23:30:34 451

原创 2348.全 0 子数组的数目

摘要:该算法用于统计数组中全0子数组的数量。通过遍历数组,当遇到0时,记录连续0段的起始位置,并计算以当前0结尾的所有可能子数组(数量为i-left+1)。时间复杂度O(n),空间复杂度O(1)。例如连续0段[3,5]可产生[3-5],[4-5],[5]三个子数组。最后累加所有符合条件的子数组数目返回结果。

2025-08-19 21:18:27 171

原创 679.24 点游戏

摘要:本文介绍了一个解决24点游戏的算法。给定4个1-9的数字,通过加减乘除和括号组合成结果为24的表达式。算法使用深度优先搜索,每次选取两个数字进行6种可能的运算(包括交换操作数),递归处理剩余数字,当只剩一个数字时检查是否接近24(考虑浮点误差)。代码实现了回溯策略,确保穷举所有可能的运算顺序和组合。该算法能正确判断给定数字是否能组成24点游戏的有效解。

2025-08-18 21:49:53 183

原创 837.新 21 点

该问题计算爱丽丝在21点变种游戏中的获胜概率。游戏规则:初始0分,当分数<K时从[1,maxPts]随机抽数累加,分数≥K时停止。求最终分数≤N的概率。使用动态规划,dp[x]表示当前分数x时的获胜概率。通过滑动窗口优化计算,逆序处理概率值,最终返回dp[0]即初始状态下的获胜概率。算法时间复杂度O(K+M),空间复杂度O(K+M),误差控制在10^-5内。

2025-08-17 23:39:35 659

原创 1323.6 和 9 组成的最大数字

摘要:给定一个仅包含数字6和9的正整数,允许翻转其中一位数字(6变9或9变6),求能得到的最大数字。通过将数字转为字符串,从左到右找到第一个6并翻转为9即可。例如,9669变为9969。该方法时间复杂度O(n),空间复杂度O(n),其中n为数字位数。

2025-08-16 21:32:28 191

原创 342.4的幂

判断一个整数是否是4的幂次方可以通过位运算实现。核心条件是:n必须为正数,是2的幂次方(即二进制表示中只有1个1),且这个1必须出现在奇数位(通过0x55555555掩码验证)。具体解法为:n>0 && (n&(n-1))==0 && (n&0x55555555)!=0。该算法时间复杂度为O(1),空间复杂度为O(1)。相关讲解视频可在抖音和哔哩哔哩平台查看。

2025-08-15 21:31:48 352

原创 1780.判断一个数字是否可以表示成三的幂的和

题目要求判断整数n能否表示为不同3的幂次之和。该问题可转化为三进制表示:若n的三进制形式各位均为0或1(无数字2),则满足条件。算法通过循环n除以3并检查余数,若某次余数为2则返回false。例如5的三进制是12(含2),需要重复使用3^0,故不满足;而4的三进制是11(均为1),满足条件。该方法利用了三进制数与幂次和的一一对应关系。

2025-08-14 21:07:57 802

原创 326.3的幂

摘要:判断一个整数是否是3的幂次方可以通过两种方法实现。第一种方法是循环除以3直到无法整除,最终结果应为1;第二种方法是利用3的19次方作为最大可能值进行取模运算。两种方法都能有效判断3的幂次方,时间复杂度分别为O(log₃n)和O(1)。相关讲解视频可在抖音和哔哩哔哩平台观看。

2025-08-13 21:31:36 233

原创 2787.将一个数字表示成幂的和的方案数

该问题要求将整数n表示为互不相同的正整数x次幂之和的方案数。采用动态规划解法,将问题转化为01背包问题:每个x次幂视为一个物品,其"重量"为幂值,目标是恰好装满容量为n的背包。算法使用一维数组dp[j]记录和为j的方案数,初始时dp[0]=1。通过枚举所有可能的底数i,计算其x次幂v,然后逆序更新dp数组。当v超过n时停止循环。最终结果返回dp[n]模10^9+7的值。时间复杂度为O(nm),其中m是满足i^x≤n的最大i值。

2025-08-12 21:39:11 216

原创 2438.二的幂数组中查询范围内的乘积

这篇文章介绍了一个算法问题:给定正整数n,将其分解为最少数目的2的幂之和(按非递减顺序排列),然后处理多个查询,计算指定下标范围内这些幂的乘积。核心解法包括:1)通过二进制分解得到2的幂数组;2)预处理模数避免溢出;3)对每个查询进行区间乘积计算。时间复杂度为O(logn + m*30),适用于大规模查询。文章还解释了关键点:二进制分解保证最少项数和有序性,long long防止中间结果溢出,以及30次循环的合理性。最后提供了抖音和哔站的视频讲解链接。

2025-08-11 23:08:01 367

原创 869.重新排序得到 2 的幂

摘要:本文介绍了一种判断正整数n能否通过数字重排变成2的幂次的方法。算法先统计n的数字频次,然后枚举所有2的幂次(1,2,4,8,...),检查是否存在与n数字频次完全相同的2的幂。若存在则返回true,否则返回false。该方法通过位运算高效生成2的幂次,并用memcmp快速比较数字分布,时间复杂度主要取决于2的幂次的数量级。

2025-08-10 09:09:09 201

原创 231.2的幂

本文介绍了一种判断整数n是否为2的幂次方的高效算法。算法基于两个关键特性:1)2的幂次方必须为正数;2)其二进制表示中仅有一个1。通过将n与n-1进行按位与运算,结果为0则说明n是2的幂次方。该方法的时间复杂度为O(1),代码简洁高效。示例中8(1000)与7(0111)的按位与结果为0,验证了该算法的正确性。

2025-08-09 21:08:14 272

原创 808.分汤

本文探讨了两种汤A和B的随机分配问题。初始各有n毫升,每轮按固定概率执行四种操作,每次共取出100ml。采用动态规划方法计算汤A先空的概率加上同时空概率的一半。关键步骤包括:1)当n≥4276时直接返回1.0;2)将毫升数转换为25ml单位;3)建立DP表存储状态概率;4)处理边界条件;5)递推计算所有状态。算法时间复杂度O(m²),通过单位转换优化计算。当n较大时利用经验值提前终止,保证精度在允许范围内。

2025-08-08 21:49:38 372

原创 3363.最多可收集的水果数目

摘要:该问题要求在n×n网格中,三个分别从不同角落出发的小朋友在到达终点(n-1,n-1)的过程中,最大化收集水果的总数。解决方案采用分步策略:1)固定第一个小朋友走对角线收集所有水果并清零;2)使用动态规划计算第二个小朋友在上三角区域(i<j)的最大收集量;3)复用DP表计算第三个小朋友在下三角区域(i>j)的最大收集量。最终结果为三个步骤收集量的总和。算法时间复杂度为O(n²),空间复杂度为O(n²)。

2025-08-07 21:54:50 267

原创 3479.水果成篮 III

摘要:该问题要求将水果按顺序放入符合容量要求的最左侧篮子中。作者采用分块预处理方法,将篮子分为√n大小的块,维护每块最大容量以快速跳过不满足条件的块。时间复杂度为O(n√n)。LeetCode官方解法使用线段树,通过区间查询和单点更新高效处理,时间复杂度为O(n log n)。两种方法都确保了"先到先得"的分配原则,并统计无法放置的水果数量。

2025-08-06 23:27:02 844

原创 3477.水果成篮II

该算法解决水果分配问题:给定水果数组和篮子容量数组,按顺序将每种水果放入首个足够大且未被占用的篮子。核心步骤包括:遍历水果数组,对每个水果顺序查找可用篮子,成功放置后标记篮子并减少未放置计数。若找不到合适篮子,该水果保持未放置状态。最终返回未放置的水果种类数。时间复杂度为O(n*m),其中n和m分别是水果和篮子的数量。算法通过贪心策略确保最先满足条件的水果优先分配。

2025-08-05 21:31:09 180

原创 904.水果成篮.mp4

摘要:本文介绍如何解决"水果成篮"问题,即在一排果树中选择最多包含两种水果类型的最长子数组。作者使用滑动窗口算法,维护两个变量type1和type2记录当前窗口内的水果类型,并通过last1和last2跟踪它们最后出现的位置。当遇到第三种水果时,淘汰较早出现的一种水果,保持窗口内始终不超过两种类型。时间复杂度O(n),空间复杂度O(1)。该问题等价于求最长连续子数组最多包含两种不同元素的变种滑动窗口应用。

2025-08-04 20:13:52 339

原创 2106.摘水果

摘要: 该问题要求在无限x轴上,从起点startPos出发,最多走k步,摘取连续区间内的水果总和最大值。给出两种解法: 二分查找法:枚举左端点l,二分查找满足步数≤k的最大右端点r,利用前缀和数组快速计算区间和。时间复杂度O(nlogn),空间O(n)。 滑动窗口法:同向双指针维护合法区间[l,r],动态调整窗口并累加水果数。时间复杂度O(n),空间O(1),代码更简洁。 关键点:步数计算分三种情况(起点在区间左、右或内部),滑动窗口法通过实时调整指针避免重复计算,效率更优。

2025-08-03 23:38:57 776

原创 2561.重排水果

本文研究了如何使两个果篮中水果种类和数量相同的问题。给定两个数组basket1和basket2表示水果成本,每次交换的成本为min(basket1[i],basket2[j])。首先检查能否平分:若任何数字出现奇数次则返回-1。然后计算需要交换的差异数字,使用贪心策略以最小成本交换。关键优化是引入全局最小数字m作为中介,交换成本取min(x,2*m)而非直接交换的min(x,y)。两种解法本质相同:作者代码通过逐个处理差异数字,而LeetCode官方代码使用nth_element快速选取前一半最小值。时间复

2025-08-02 21:53:23 610

原创 118.杨辉三角

本文介绍了生成杨辉三角的算法。给定行数numRows,程序从第0行开始递推,每行的首尾元素为1,中间元素由上一行相邻元素相加得到。算法先处理特殊情况(numRows≤0),然后初始化第0行为[1],接着通过循环依次计算每行元素。时间复杂度O(n²),空间复杂度O(n²)。代码简洁高效,利用vector容器实现二维数组存储,并通过std::move优化性能。

2025-08-01 21:15:51 192

原创 2683.相邻值的按位异或

摘要:本文讨论如何判断给定异或派生数组derived是否存在有效的原始二进制数组original。关键发现是derived数组所有元素的异或和必须为0才能存在解,因为original数组中每个元素会在异或过程中出现两次。提供了两种解法:1) 直接计算异或和是否为0;2) 尝试用0和1作为首元素模拟构造original数组。时间复杂度均为O(n),空间复杂度分别为O(1)和O(n)。相关解题视频可在抖音和哔站观看。

2025-07-31 21:02:33 315

原创 2419.按位与最大的最长子数组

摘要:题目要求找到数组中按位与运算结果最大的最长子数组。关键思路是:按位与运算结果不会超过数组最大值,因此只需寻找最长的连续最大值子数组。两种解法:1) 记录非最大值位置来计算连续段长度;2) 遍历时维护最大值和当前连续计数。两种方法时间复杂度均为O(n),空间复杂度O(1)。相关讲解视频可在抖音和B站查看。

2025-07-30 21:50:13 273

原创 2411.按位或最大的最小子数组长度

本文探讨了求解数组中以每个位置为起点的最短最大按位或子数组的两种算法。第一种方法采用顺序扫描,通过逆序更新左端点的累积OR值并利用单调性进行剪枝,时间复杂度O(n),空间复杂度O(1)。第二种方法从右向左扫描,通过维护31个比特位的最右出现位置信息来确定最短子数组,时间复杂度固定为O(31n)。两种方法各有优势:前者代码简洁、常数因子小,后者思路新颖、对稀疏数据表现稳定。在可读性、空间效率和扩展性方面,两种方法展现了不同的设计思路,均为解决该问题的有效方案。

2025-07-29 21:31:02 494

原创 2044.统计按位或能得到最大值的子集数目

题目要求找出数组中所有非空子集的按位或最大值,并统计能得到该最大值的子集数量。原始解法通过枚举所有子集(共2ⁿ-1个),逐个计算子集的或值,时间复杂度为O(n×2ⁿ),当n较大时效率较低。优化解法利用动态规划思想,通过哈希表记录不同或值的出现次数,避免了直接枚举子集。该方法首先计算整个数组的或值作为最大值,然后逐个处理数字更新或值状态,最终统计最大值的子集数量。优化后时间复杂度降为O(n×K),其中K为不同或值的数量,显著提高了效率。两种方法在LeetCode上均能通过,但优化解法更适合处理大规模数据。

2025-07-28 11:12:03 388

原创 2210.统计数组中峰和谷的数量

该问题要求统计数组中峰和谷的数量。峰定义为两侧最近不相等邻居均小于当前值,谷则为均大于当前值。作者代码通过原地去重后,利用相邻三元素关系(b-a)(b-c)>0快速判断峰/谷。Leetcode官方代码则对每个元素向左右查找第一个不相等邻居进行比较。两种方法均需处理连续相同元素情况,作者代码效率更高(O(n)时间),官方代码逻辑更直观但复杂度略高。视频讲解可在抖音/哔哩哔哩平台观看。

2025-07-27 21:29:54 279

原创 3480.删除一个冲突对后最大子数组数目

题目要求计算在删除一个冲突对后,数组中不包含任何剩余冲突对的最大子数组数量。原问题解法进行了O(n²)预处理,但会超时。优化解法通过预处理冲突对并按右端点排序,利用堆和延伸数组高效计算安全区间。核心思路是对每个左端点计算最大安全右端点,累加安全子数组数量,并处理延伸区间。最终时间复杂度优化至O(nlogn),适用于大规模数据。该方法巧妙利用了最小堆和延伸数组来优化冲突处理,确保高效求解。

2025-07-26 22:07:38 451

原创 3487.删除后的最大子数组元素和

给你一个整数数组nums。你可以从数组nums中删除任意数量的元素,但不能将其变为数组。执行删除操作后,选出nums中满足下述条件的一个子数组:子数组中的所有元素。子数组的元素和。返回子数组的。是数组的一个连续、的元素序列。

2025-07-25 12:34:31 325

原创 2322.从树中删除边的最小分数

异或值的预处理:通过一次DFS计算所有子树的异或值,避免重复计算。时间戳判断父子关系:利用in和out数组高效判断节点间的父子关系。枚举边组合:通过双重循环枚举所有可能的边删除组合,并根据边的位置关系分类讨论,确保正确计算三个连通分量的异或值。复杂度优化:利用预处理的信息(xrinout)将每种情况的计算复杂度降至O(1),使得整体复杂度为O(m^2)(m为边数,即n-1)。

2025-07-24 11:14:20 890

原创 1717.删除子字符串的最大得分

该算法通过贪心策略最大化删除"ab"和"ba"子串的得分。核心思想是优先处理价值更高的子串:若x≥y,先删除所有"ab"再处理"ba";反之则相反。采用栈结构两遍扫描字符串,第一遍处理高价值子串,第二遍处理剩余子串。时间复杂度O(n),空间复杂度O(n)。算法正确性证明表明,这种贪心策略在重叠和连续子串情况下都能获得最优解。另一种优化方案通过单次扫描和计数器实现,空间复杂度降为O(1)。两种方法均能正确解决问题,后者效率更高但实

2025-07-23 13:13:39 770

原创 1695.删除子数组的最大得分

给你一个正整数数组nums,请你从中删除一个含有的子数组删除子数组的就是子数组各元素之。返回子数组可获得的。如果数组b是数组a的一个连续子序列,即如果它等于,那么它就是a的一个子数组。

2025-07-22 21:31:49 281

原创 1957.删除字符使字符串变好

摘要:本文介绍了解决字符串去重问题的三种算法,要求删除最少的字符使字符串中不出现三个连续相同字符。第一种方法使用单指针和计数器逐个检查字符;第二种采用双指针优化,快指针扫描原字符串,慢指针构建结果;第三种是LeetCode官方解法,通过检查结果字符串末尾两个字符决定是否添加当前字符。三种方法都能保证唯一解,其中双指针算法在性能和内存上表现最优。

2025-07-21 21:47:03 215

原创 1948.删除系统中的重复文件夹

该问题要求删除文件系统中具有相同子文件夹结构的重复文件夹。解决方案采用字典树结构构建文件夹路径,通过后序遍历为每个子树生成唯一签名。使用哈希表记录签名出现次数,标记重复子树为待删除。最后DFS遍历字典树,跳过被标记节点收集剩余路径。算法时间复杂度为O(NL),空间复杂度O(NL),其中N是路径数,L是平均路径长度。关键点在于利用序列化签名高效检测重复子树结构。

2025-07-20 13:57:35 584

原创 1233. 删除子文件夹

本文提出了一种删除文件夹列表中所有子文件夹的算法。通过将文件夹路径按字典序排序,确保父文件夹总是出现在子文件夹之前。算法维护一个结果列表ans,依次检查每个路径是否为当前最后一个保留路径的子文件夹。判断标准是:当前路径长度更长、前缀匹配且紧跟'/'字符。若非子文件夹则将其加入结果列表。该解决方案时间复杂度为O(nlogn)(主要来自排序),空间复杂度为O(1)(不考虑输出空间)。关键点在于利用排序后的路径顺序和字符串操作高效识别子文件夹关系。

2025-07-19 10:33:35 389

计算机八年架构面试模板

针对于达到架构水平的专家,包含了基本信息,教育经历,获奖经历,专业技能,实习经历,项目经历。每个模块都有详细内容可用于借鉴。

2024-08-04

计算机有经验类面试模板3

针对于已有一定工作经验,重新找工作的人群,包含了基本信息,教育经历,获奖经历,专业技能,实习经历,项目经历。每个模块都有详细内容可用于借鉴。

2024-08-04

毕业生选题管理系统.md

这是一个我自己写的毕业生选题管理系统,是c语言版本,后面我会陆续推出一整个系列管理系统大作业合集

2024-08-02

c语言贪吃蛇小游戏源码

我写的贪吃蛇小游戏,给大家玩玩。

2024-08-02

计算机有经验类面试模板2

针对于有经验的,准备换工作的人群,包含了基本信息,教育经历,获奖经历,专业技能,实习经历,项目经历。每个模块都有详细内容可用于借鉴。

2024-08-02

计算机有经验类面试模板

针对于已有一定工作经验,重新找工作的人群,包含了基本信息,教育经历,获奖经历,专业技能,实习经历,项目经历。每个模块都有详细内容可用于借鉴。

2024-08-02

计算机类面试简历模板1

包含了基本信息,教育经历,获奖经历,专业技能,实习经历,项目经历。每个模块都有详细内容可用于借鉴。

2024-08-01

Java面试简历通用版2

内涵java模板型简历 ,适用于进行java岗求职的人群

2024-07-31

java面试模板通用版1

模板类的简历,适用于进行Java面试的人群

2024-07-31

数学建模优化算法的论文复现

企业的生产离不开原材料,因此原材料订购与运输成为每一个生产企业时刻关注的问题.针对2021年全国大学生数学建模竞赛C题的问题三和问题四,研究生产企业原材料的订购与运输问题,在问题一及问题二的基础上,以总成本最低和损耗量最少为目标,分别建立多目标规划模型,找到两种情况达到相对最佳的结果,得到最优的订购方案,使企业获得了更多的利润.根据现有原材料的供应商和转运商的实际情况,以最小损耗量为目标函数,以转运平衡和最大产能为约束条件,建立线性规划模型,确定该企业每周的产能提高量,并给出未来24周的订购和转运方案,在一定程度上为生产企业原材料订购与运输问题的决策提供了可靠的理论支撑和实践指导. 适合刚开始数学建模的学生,了解论文布局,产品结构,以及知识架构

2024-07-31

空空如也

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

TA关注的人

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