自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 2025.12.11 力扣每日一题

该算法统计被其他建筑包围的建筑数量。通过维护每行/列的最小最大坐标值(row_min/row_max, col_min/col_max),判断建筑是否满足:在行方向位于左右建筑之间,在列方向位于上下建筑之间。初始化时设置边界值,遍历建筑更新极值后,再次遍历检查每个建筑是否被包围。时间复杂度O(n),空间复杂度O(n),n为建筑数量。

2025-12-11 23:48:40 228

原创 2025.12.10 力扣每日一题

该算法解决计算机解锁顺序排列数问题。核心约束是:所有非0号计算机的复杂度必须严格大于0号计算机,否则返回0。若满足条件,则有效排列数为(n-1)!(阶乘),其中n为计算机数量。算法通过遍历数组验证约束条件,同时计算阶乘并取模防止溢出。时间复杂度O(n),空间复杂度O(1)。

2025-12-10 22:44:03 211

原创 2025.12.09 力扣每日一题

摘要:该代码使用哈希表统计前后缀元素出现次数,高效计算满足条件的三元组数目。通过维护前缀表pre和后缀表suf,在遍历数组时动态更新两个哈希表,统计满足nums[i]=2nums[j]和nums[k]=2nums[j]的元素数量,避免暴力枚举带来的溢出问题。时间复杂度为O(n),空间复杂度O(n),利用取模运算防止结果溢出。

2025-12-10 00:01:11 142

原创 2025.12.08 力扣每日一题

摘要:该文展示了一个计算平方和三元组数目的C++解法。通过三重循环遍历1到n的所有整数组合,检查是否满足i²+j²=k²的条件,统计符合条件的组合数并返回。算法时间复杂度为O(n³),适用于小规模输入。

2025-12-08 21:51:47 184

原创 2025.12.07 力扣每日一题

文章摘要:该代码实现了一个统计区间内奇数数量的简单方法。通过遍历从low到high的所有整数,检查每个数是否为奇数(i%2==1),并累加计数。最终返回奇数总数。虽然有效,但可能存在更高效的数学计算方法。

2025-12-07 23:35:42 189

原创 2025.12.06 力扣每日一题

该题解使用动态规划和单调队列统计极差不超过K的数组分割方式数。通过维护最大值和最小值双端队列,在滑动窗口内保证极差条件,动态计算分割方案数。时间复杂度O(n),空间复杂度O(n)。核心在于窗口调整时动态更新前缀和数组,并利用模运算处理大数。最终返回dp[n]作为结果。

2025-12-07 00:04:05 135

原创 2025.12.05 力扣每日一题

该算法统计将数组划分为两部分时,两部分元素和之差为偶数的分区方案数。通过累加数组总和,然后遍历数组逐步计算前后部分和,检查差值是否为偶数来计数。时间复杂度为O(n),空间复杂度为O(1)。适用于需要统计特定分区方案的场景。

2025-12-07 00:03:56 157

原创 2025.12.04 力扣每日一题

本文提出了一种统计道路上车辆碰撞次数的算法。通过分析车辆行驶方向(L左/R右/S静止),算法首先排除不会发生碰撞的前缀向左车辆和后缀向右车辆。然后统计剩余区间内非静止车辆的数量,这些车辆必然会发生碰撞。该算法时间复杂度为O(n),空间复杂度O(1),高效解决了道路碰撞次数的统计问题。

2025-12-07 00:03:44 181

原创 2025.12.03 力扣每日一题

该算法统计平面点集中可以形成梯形的数目。通过双重循环遍历所有点对,计算每对点形成的直线斜率和截距,并按斜率分组存储。同时计算点对中点坐标和斜率,用于后续去重。统计阶段:1) 对每组相同斜率的直线,计算截距不同的直线组合数;2) 减去因中点相同且斜率不同(平行四边形)而被重复统计的组合。使用哈希表优化存储和查找,最终返回梯形总数。时间复杂度O(n²),空间复杂度O(n²)。

2025-12-07 00:03:30 214 1

原创 2025.12.02 力扣每日一题

本文介绍了一种计算N台电脑同时运行的最长时间的方法。算法通过二分查找确定最大可行时间,关键步骤包括:1)计算所有电池总电量;2)在0到总电量/N的范围内二分查找;3)对于每个中间值x,计算所有电池能贡献的总时长;4)比较总贡献与N*x的需求,调整查找范围。最终返回的l值即为N台电脑能同时运行的最长时间。该算法时间复杂度为O(M log K),其中M是电池数量,K是总电量/N的值。

2025-12-07 00:02:56 189 1

原创 2025.12.01 力扣每日一题

本文介绍了一种使用二分查找算法求解"同时运行N台电脑的最长时间"问题的高效解法。算法首先计算所有电池的总电量,通过二分查找确定最大运行时间x,检查所有电池能否提供至少n*x的总电量。核心思路是将问题转化为电量分配问题,利用二分法快速定位最优解。文章还详细讲解了C++17的reduce函数用法,包括基础累加、自定义操作和并行计算,并对比了reduce与accumulate的区别。示例代码展示了如何应用该算法解决实际问题,最终返回满足条件的最大运行时间。

2025-12-02 00:00:06 702

原创 力扣每日一题 2025.11.30

摘要: 题目要求找出最短的子数组,使其移除后剩余数组和能被P整除。解法利用哈希表存储前缀和模值,通过计算当前模与目标模的关系快速定位满足条件的子数组。核心步骤:1)计算总和模x;2)遍历数组,维护前缀和模y;3)在哈希表中查找(y-x) mod p对应的索引,更新最小长度。示例验证显示算法正确性。此外,C++的auto关键字用于自动类型推断,简化代码,尤其在处理复杂类型或迭代器时效果显著。 (字数:150)

2025-11-30 23:49:47 766 1

原创 2025.11.29 力扣每日一题

文章摘要: 该文介绍了一个简单的算法解决方案,用于计算使数组和能被K整除的最少操作次数。核心思路是先计算数组元素的总和sum,然后返回sum对K取模的结果。当sum能被K整除时结果为0,否则结果为余数,即需要增加或减少的操作次数。代码简洁高效,时间复杂度为O(n)。

2025-11-29 23:49:03 164

原创 力扣每日一题 2025.11.28

该题解通过DFS遍历树结构,统计能被K整除的连通块数目。算法首先构建邻接表表示树结构,然后从根节点开始递归计算每个子树的权值和。当子树权值和能被K整除时,计数器加1。最终返回满足条件的连通块总数。时间复杂度为O(n),空间复杂度为O(n),其中n为节点数。关键点在于递归过程中实时判断子树权值和对K取模的结果。

2025-11-28 23:15:50 264

原创 力扣每日一题 2025.11.27

该算法解决"长度可被K整除的子数组的最大元素和"问题。采用前缀和与动态规划结合的方法:1)计算前缀和数组sum;2)维护一个大小为K的数组min_s,记录不同余数对应的最小前缀和;3)遍历时利用sum[j]-min_s[i]计算符合条件的子数组和,其中i=j%k。通过不断更新min_s和最大值ans,最终得到结果。时间复杂度O(N),空间复杂度O(N+K),巧妙利用余数性质优化了计算过程。

2025-11-28 23:12:03 627

原创 力扣每日一题 2025.11.26

本文提出了一种解决"矩阵中和能被K整除的路径"问题的动态规划方法。通过定义三维DP数组dp[m+1][n+1][k],其中dp[i][j][r]表示到达网格(i-1,j-1)时路径和模k等于r的路径数量。算法从起点开始初始化,遍历每个网格点时,根据上方和左方相邻点的状态转移计算当前点的路径数,最终返回终点处模k为0的路径数。该方法利用动态规划有效避免了重复计算,时间复杂度为O(mnk),空间复杂度为O(mnk),适用于大规模网格计算。

2025-11-26 23:43:04 468

原创 力扣每日一题 2025.11.25

本文探讨了寻找能被K整除的最小全1数的问题。关键点在于通过余数递推避免数值溢出:每次计算当前全1数对K的余数时,利用前一个余数乘以10加1再取模的方法(rem_m = (rem_{m-1}*10+1)%k)。算法先排除K为2或5倍数的情况,然后最多进行K次循环,利用鸽巢原理保证在K次内必能找到解或确定无解。这种方法无需构造实际的全1数,仅通过余数计算即可高效求解,时间复杂度为O(K)。例如K=3时,经过3次迭代即可找到111是满足条件的最小解。

2025-11-26 00:08:18 453

原创 2025.11.23 力扣每日一题

本文提出了一种使用动态规划解决"可被三整除的最大和"问题的方法。算法通过二维数组memo[i][j]记录前i+1个元素中和除以3余j的最大值,采用记忆化递归实现。递归函数dfs考虑两种情况:不选当前元素时保持余数不变,或选择当前元素时更新余数。通过比较这两种情况获取最大值并存储,避免重复计算。最终返回考虑所有元素且余数为0时的最大和,即为所求结果。该方法有效降低了时间复杂度,适用于解决类似的最大和模数问题。

2025-11-25 00:14:50 342

原创 2025.11.24 力扣每日一题

本文介绍了一种高效判断二进制序列前缀能否被5整除的算法。通过维护前缀余数(当前二进制前缀转换为十进制后对5取余的结果),避免了直接计算大数导致的溢出问题。算法核心是利用模运算性质:每次迭代时,当前余数=(前次余数×2+当前位)%5。该方法时间复杂度O(n),空间复杂度O(1),有效解决了大数溢出和计算效率问题。示例说明如何计算二进制序列[1,0,1,1]的各个前缀余数,并解释了为何前缀余数法优于直接计算十进制值。

2025-11-24 23:47:26 291

原创 2025.11.22 力扣每日一题

摘要:这段代码通过遍历数组,统计不能被3整除的元素个数,并将这些元素加1使其被3整除。最终返回操作次数。该方法简单直接,时间复杂度为O(n)。注意:实际可能需要更复杂的处理来确保最优解。

2025-11-22 22:39:39 266

原创 2025.11.21 力扣每日一题

本文介绍了一种计算字符串中长度为3的不同回文子序列数量的算法。算法核心是枚举26个小写字母作为首尾字符,定位其在字符串中的首尾出现位置,统计中间不同字符的数量。通过哈希集合自动去重的特性,高效统计中间字符种类数,将结果累加得到最终答案。该算法时间复杂度为O(26*n),适用于处理任意长度的字符串。示例验证表明该方法能正确统计回文子序列数量。

2025-11-21 21:52:29 655

原创 2025.11.20 力扣每日一题

本文介绍了力扣757题"设置交集大小至少为2"的官方解法。该算法首先对区间进行排序(左端点升序,相同则右端点降序),然后从右向左处理每个区间。对于每个区间,若当前包含数字不足2个,则从其左端点开始选取新数字,并将这些数字共享给前面的重叠区间。通过维护temp数组记录各区间已包含数字,确保最终集合最小。示例验证展示了算法如何逐步处理区间并构建大小为3的集合[3,4,1],与示例结果[2,3,4]等价。该解法高效地解决了要求所有区间至少包含集合中2个元素的问题。

2025-11-20 18:10:39 215

原创 2025.11.19 力扣每日一题

这篇文章描述了一个简单的数组处理算法:在排序后的数组中,每当遇到与给定值original相等的元素时就将original翻倍。算法首先对数组进行排序(O(NlogN)复杂度),然后遍历数组(O(N)复杂度),总时间复杂度为O(NlogN)。该解决方案简洁高效地实现了题目要求,即在排序数组中按顺序查找并连续翻倍原始值的过程。

2025-11-19 21:08:05 309

原创 2025.11.18 力扣每日一题

该题目要求判断给定二进制数组能否被完整解码为1比特和2比特字符,并确定最后一个字符是否为1比特字符。解码规则为:遇到1时必须取后两位组成2比特字符,遇到0时取1位作为1比特字符。解题思路是遍历数组(除最后一位),根据当前值决定前进1位或2位。若最终停留的位置恰好在倒数第二位,说明最后一位是独立的1比特字符,返回true;否则返回false。例如[1,0,0]解码后最后一个字符是1比特,而[1,1,1,0]的最后一个字符是2比特。

2025-11-18 23:34:35 621

原创 2025.11.17 力扣每日一题

摘要: 该算法检查数组中所有1之间的间隔是否≥k。初始化计数器cnt=k是关键:若设为0,首个1会被误判为间隔不足(当k≥1时)。初始化为k可避免此问题,确保首个1无需间隔检查。遍历时,遇到0则cnt++;遇到1时,若cnt<k则返回false,否则重置cnt=0。此设置兼容k=0(允许相邻1)的情况,保证逻辑正确性。

2025-11-17 18:35:54 205

原创 2025.11.16 力扣每日一题

本文介绍了计算字符串中仅包含'1'的子串数量的算法。通过遍历字符串,记录当前连续'1'的个数,当遇到'0'时重置计数器。对于每个连续'1'序列,其包含的子串数为1+2+...+n(n为连续'1'长度),通过累加这些值得到结果。为防止数值过大,使用1e9+7取模处理。算法时间复杂度为O(n),空间复杂度为O(1)。

2025-11-16 19:54:50 333

原创 2025.11.14 力扣每日一题

本文介绍了二维差分数组算法及其应用。该算法用于高效处理矩阵中子矩阵元素的批量增减操作,通过差分标记和前缀和计算实现。要点包括:1) 差分数组通过四个角落标记实现子矩阵加减;2) 使用(n+2)×(n+2)数组避免边界判断;3) 通过二维前缀和还原最终矩阵。相比直接操作,时间复杂度从O(k·n²)优化到O(k+n²)。文章还对比了一维/二维差分数组的实现方法,并提供了完整C++代码示例。该技术适用于需要频繁子矩阵更新的场景,是区间操作的高效解决方案。

2025-11-15 23:28:37 1421

原创 2025.11.15 力扣每日一题

本文提出了一种统计字符串中“1显著子串”(满足子串中1的数量≥0数量的平方)的高效算法。算法通过维护0的位置数组pos0(初始包含哨兵-1)和遍历字符串,分两部分统计:1)不含0的子串直接通过右边界与最后一个0的位置差计算;2)含0的子串通过倒序遍历pos0,筛选满足条件的左端点范围。利用哨兵-1统一处理边界情况,保证时间复杂度为O(n)。关键步骤包括:更新0的位置数组、动态统计1的总数、分情况计算有效子串数量,最终返回满足条件的子串总数。

2025-11-15 21:14:45 498

原创 2025.11.13 力扣每日一题

这段代码计算将字符串中的1移动到末尾的最大操作次数。其核心思路是:遍历字符串时统计遇到的1的数量(countOne),当遇到0时,跳过连续的0并累加左侧1的数量到结果(ans)。这样每个0区间的操作次数等于其左侧所有1的数量。例如字符串"1001101"中,跳过连续0后累加countOne,最终得到4次操作。算法通过单次遍历实现,时间复杂度为O(n),高效且正确。

2025-11-13 18:35:56 1002

原创 2025.11.12 力扣每日一题

该题目要求通过相邻元素的最大公约数(gcd)操作使数组所有元素变为1,求最少操作次数。关键点在于:若数组整体gcd大于1则无法生成1;若已有1则只需替换剩余元素;否则需寻找最短gcd为1的子数组来生成1,再替换其他元素。算法首先判断整体gcd,若满足条件则统计1的个数或寻找最短子数组。时间复杂度为O(n²),空间复杂度为O(1)。示例验证显示算法正确性。

2025-11-13 18:31:43 215

原创 2025.11.11 力扣每日一题

该代码解决的是"474.一和零"问题,即给定一个二进制字符串数组,在不超过m个0和n个1的限制下找到最大子集长度。这是一个二维0-1背包问题变种: 问题建模:将每个字符串视为物品,其"重量"由0和1的数量构成,背包容量为m个0和n个1。 动态规划解法: 使用dp[j][k]表示用不超过j个0和k个1时的最大子集长度 反向遍历容量(m→0, n→0)避免重复选择 状态转移方程:dp[j][k] = max(不选当前字符串,选当前字符串) 优化处理: 预处理每个字符串的0

2025-11-11 23:59:56 214 2

原创 2025.11.10 力扣每日一题

摘要:本文介绍了一个利用单调栈解决"将所有元素变为0的最少操作次数"问题的算法。该算法通过维护一个单调递增栈来统计需要的最少操作次数,每次遇到比栈顶元素大的非零元素时计数并压栈。时间复杂度为O(n),每个元素最多入栈和出栈一次。单调栈的核心思想是保持栈内元素单调性,通过弹出破坏单调性的元素来高效解决问题,在区间最值、下一个更大元素等问题中有广泛应用。

2025-11-10 22:47:25 949 1

原创 2025.11.09 力扣每日一题

【代码】2025.11.09 力扣每日一题。

2025-11-09 20:54:53 1364 2

原创 2025.11.08 力扣每日一题

按照二进制位从高到低的顺序,根据每个 1 的位置计算其基准操作次数,再通过符号交替体现位之间的抵消关系,最终累加得到总操作次数。我们可以将方法一的递归改成迭代。

2025-11-08 23:18:04 382

原创 2025.11.07 力扣每日一题

本文提出了一种解决"最大化城市最小供电量"问题的高效算法。方法采用二分查找确定可能的最小供电量最大值,结合贪心策略和差分数组优化计算。具体实现分为:1)利用差分数组预处理初始供电量;2)设计检查函数验证目标值可行性,通过贪心策略在最右侧补建电站以最大化覆盖范围;3)采用二分框架快速搜索最优解。该算法的时间复杂度为O(n log S),其中n为城市数,S为可能的供电量范围,显著优于暴力解法,能够高效处理大规模数据。

2025-11-08 22:38:28 395

原创 2025.11.06 力扣每日一题

摘要:该算法解决电网维护问题,使用并查集管理电网连通性,结合有序集合存储在线电站。初始化时每个电站独立,通过合并操作连接电网。对于查询:类型1查找指定电站或所属电网的最小在线电站;类型2标记电站离线。算法利用路径压缩优化并查集查找效率,通过哈希表维护各电网在线电站的有序集合。核心复杂度为O(α(n))的并查集操作和O(logn)的有序集合操作,适用于大规模电网维护场景。

2025-11-07 23:52:06 218

原创 8.26学习日志

杨辉三角是一个经典的编程问题,其核心规律是每个数等于它上方两数的和。主要实现要点包括:1)使用双重循环控制行和列;2)边界条件处理(首尾元素为1);3)动态二维数组vector<vector<int>>存储数据。解题时先初始化行向量并赋初值1,再通过递推公式计算中间元素。该问题结合了循环、数组和组合数学知识,还可延伸出组合数、二项式定理等数学概念。典型实现使用C++的vector容器,具有动态扩展、灵活高效的特点。

2025-08-26 17:53:08 1064

原创 8.25学习日志

本文总结了C++哈希容器和Lambda表达式的核心知识点。哈希容器(unordered_set/map等)基于哈希表实现,提供O(1)平均时间复杂度的快速查找,适用于不需要元素有序的场景;而有序容器(set/map等)基于红黑树实现,保持元素有序但查找复杂度为O(logn)。文章详细介绍了四大哈希容器的使用方法、性能优化技巧和常见应用场景。 Lambda表达式部分系统讲解了其语法结构、捕获机制、mutable关键字、返回类型声明等核心概念,并展示了在STL算法、类成员函数、泛型编程等场景中的实际应用。最后通

2025-08-25 17:46:44 1086

原创 8.20学习日志

本文介绍了C++中异或(XOR)运算符^的用法及其在算法中的应用。异或运算遵循"相同为0,不同为1"的规则,具有交换律、结合律等特性。文章重点讲解了异或运算在五个场景中的应用:1)交换变量值;2)寻找数组中只出现一次的数字;3)简单加密解密;4)判断数字符号;5)硬件位操作。针对LeetCode第136题,提供了两种解法:哈希集合法和高效的异或位运算解法,后者通过连续异或操作将出现两次的数字抵消,最终得到只出现一次的数字。异或运算在算法中具有空间复杂度低、执行效率高的优势。

2025-08-20 17:54:38 1323

原创 8.19学习日志

静态数组(如C/C++)可能需要手动计算长度。动态数组/列表(如Java、Python)通常有内置方法或属性(如.length或len()在字符串场景中,类似的方法也适用(如或len(str)sizeof()和.size()是两种不同的获取大小或长度的方法,但它们适用于不同的场景和编程语言。1.sizeof()适用语言C / C++作用sizeof()是一个运算符(不是函数),用于计算变量、数据类型或对象在内存中占用的字节数(byte)。特点在编译时确定结果(静态计算)。可以用于基本数据类型(如int。

2025-08-19 17:10:31 827

空空如也

空空如也

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

TA关注的人

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