自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024. 考试的最大困扰度

本题的核心是利用滑动窗口维护满足修改次数限制的最长连续子串。通过分别计算以'T'和'F'为目标的最长连续子串,取最大值即可。这种双向滑动窗口技巧,是处理「最多 k 次修改/翻转,求最大连续相同字符」类问题的经典方法。

2025-07-22 09:17:07 672

原创 2023. 连接后等于目标字符串的字符串对

本题通过双重循环暴力枚举(i, j),判断拼接是否等于target,统计满足条件的对数。代码简单,效率在题目限制下足够。适合作为字符串拼接问题的入门练习。

2025-07-22 09:16:21 258

原创 2018. 判断单词是否能放入填字游戏内

你需要实现一个函数,判断给定的单词word是否可以被放入一个填字游戏棋盘board中。棋盘是一个m x n' ''#''#'' ''#'

2025-07-21 16:56:47 315

原创 2017. 网格游戏

这道题虽然看似是路径收集问题,实质是一个零和博弈问题。第一个机器人控制路径影响第二个;第二个机器人总是在剩余点数最多路径中选择。通过枚举策略 + 前缀和加速判断,可以轻松解决这道题,并深入理解“在约束下的最优选择博弈模型。

2025-07-21 16:56:02 644

原创 2013. 检测正方形

本题属于典型的几何枚举 + 哈希表计数问题,通过构造候选点 + 判断其是否存在于数据结构中,可以高效地统计所有满足条件的正方形组合。你可以根据应用场景选择更适合的优化版本。通过本题可以锻炼你对几何构造、哈希存储、查询优化等综合能力。

2025-07-20 17:32:17 291

原创 2012. 数组美丽值求和

类似于“前缀最大值”“后缀最小值”这种技巧在很多问题中都非常常用,比如“下一个更大元素”、“最大子数组”等。本题的本质是利用这些前缀/后缀信息,避免了不必要的暴力枚举,达到了线性优化效果。

2025-07-20 17:31:37 677

原创 2008. 出租车的最大盈利

定义数组dpdp[i]表示以第i个订单作为最后一个接的订单时,能获得的最大收益。该题核心是求最大权重不相交区间子集,经典算法是先排序后动态规划,利用二分优化。也可以用线性扫描+优先队列,但复杂度和代码复杂度通常更高。通过合理的状态设计和二分查找,能在线性对数时间内完成。

2025-07-19 18:18:14 549

原创 2007. 从双倍数组中还原原数组

这道题通过计数和排序来匹配元素及其双倍,是典型的哈希表应用。合理处理特殊元素和边界条件,是确保算法正确的关键。掌握这类问题对理解数组配对、频率统计和排序有重要帮助。

2025-07-19 18:17:13 1013

原创 2002. 两个回文子序列长度的最大乘积

子序列是从字符串中删除若干字符(也可以不删除)后,剩余字符的相对顺序不变的字符串。本题是回文子序列与位掩码的结合。枚举所有子序列并判断回文,是利用小规模输入限制的典型暴力解法。使用位掩码保证子序列索引的快速判断和不相交验证。适合用来熟悉回文、子序列和位运算技巧的组合。

2025-07-18 00:05:51 419

原创 2001. 可互换矩形的组数

这道题的关键点在于如何准确比较两个矩形的宽高比。直接浮点数比较容易出错且效率较低。通过化简宽高比为最简分数并利用哈希统计出现次数,可以高效解决问题。该题属于经典的哈希计数问题,技巧在于如何规范地表示宽高比。掌握了分数化简技巧,可以应对类似比例问题的判断与计数。

2025-07-18 00:05:07 901

原创 1997. 访问完所有房间的第一天

本题巧妙地利用动态规划,将复杂的跳转模拟简化成递推公式,避免了大规模的时间模拟。关键在于理解访问次数的奇偶性如何影响访问顺序。利用前面访问的结果dp计算后续房间访问天数。时间和空间复杂度均为 O(n),适合 n 达到 10^5 的场景。

2025-07-17 23:46:37 857

原创 1996. 游戏中弱角色的数量

这道题考查了二维排序与贪心的结合应用。关键在于排序策略,防止攻击值相同的角色造成误判。逆序遍历维护最大防御值,能够在一次遍历中判断角色是否弱。这类「二维条件筛选」的问题,类似于“skyline问题”或“包裹问题”,可以借鉴排序+扫描的思路。

2025-07-17 23:45:51 366

原创 1993. 树上的操作

设计一个支持上述三种操作的数据结构。对树结构的父节点数组进行初始化。调用lockunlockupgrade函数时需高效地满足条件判断。节点锁定状态和用户信息需要准确维护。操作次数和节点数均有限制,考虑时间复杂度。这道题考察了树结构上的状态维护与递归遍历能力,涉及祖先和子孙节点的条件判断。通过维护父节点和子节点列表,能方便地查询祖先和子孙。递归深度受限于树高,DFS在题目范围内效率足够。可用类似的方法扩展至更复杂的树状结构状态管理。

2025-07-12 13:56:16 336

原创 1992. 找到所有的农场组

利用题目中“农场为矩形且不相邻”的特点,大大简化了问题,遍历时遇到1直接定位矩形边界,标记后避免重复,该方法简单易实现,时间空间效率都很好。

2025-07-12 13:55:37 244

原创 1986. 完成任务的最少工作时间段

函数dfs(mask)表示完成mask这组任务(用1标记)的最少时间段数。mask == 0表示任务全部完成,返回 0。本题核心是任务划分的子集组合优化问题,利用状态压缩和子集枚举的经典技巧实现最优解。该方法虽然复杂度指数级,但通过合理的剪枝和记忆化缓存,在 14 个任务以内表现良好。此题是理解位运算枚举子集、状态压缩 DP 和记忆化递归的典型练习,适合刷题和算法学习。

2025-07-10 10:35:25 1139

原创 1985. 找出数组中的第 K 大整数

方法优点缺点转整数比较简单直观数据大时会溢出自定义比较适用所有长度数字,灵活代码稍复杂,需保证比较正确预处理排序利用内置排序快速,代码简洁依赖排序稳定和正确的 key本题最优方案是利用 Python 的排序稳定性和灵活的排序键,实现基于长度和字典序的排序,保证高效准确。本题的关键是正确比较字符串表示的大整数。通过先比较长度,再字典序比较,能够实现数字大小排序。利用内置排序和合适的排序键,可以轻松得到第 k 大数字。此方法不仅高效,而且代码简洁,适合面试和实际编程使用。

2025-07-10 10:34:43 436

原创 1981. 最小化目标值与所选元素的差

暴力搜索难以接受,时间复杂度爆炸。动态规划通过保存每步的可能和,有效避免了重复计算。剪枝确保状态集合不过度膨胀,提升性能。对比其他方法如DFS+剪枝,这种DP思路更容易理解和实现,也更稳定。利用位运算优化状态表示(位集)。使用布尔数组替代集合,快速判断和状态。在Python中适当用heap或优先队列优化查找最小差。

2025-07-08 00:15:00 303

原创 1980. 找出不同的二进制字符串

这道题的精妙之处在于它是构造题而不是查找题。使用康托尔对角线法,可以快速构造一个保证不在原数组中的字符串;这种方法是数学构造中的经典技巧,也是很多面试官考察的重点;理解这个技巧,对提升构造思维能力大有裨益。

2025-07-08 00:00:00 406

原创 1976. 到达目的地的方案数

这道题是 Dijkstra 算法的一个拓展版本,除了求出最短路径长度,还需要统计路径数目。这种题型在图论竞赛和工程中都很常见,比如地图导航、数据包传输路径计数等。

2025-07-07 00:45:00 550

原创 1969. 数组元素的最小非零乘积

这道题是一道非常典型的数学构造 + 位操作建模问题抽象交换操作的意义;利用二进制位的对称性和全局可控性;构造数学表达式,结合快速幂求解。不仅锻炼了对位运算和数论的理解,也要求具备较强的建模能力。

2025-07-07 00:30:00 1239

原创 1968. 构造元素不等于两相邻元素平均值的数组

该问题可以通过对数组排序后分成两半,再交错排列的策略轻松解决。这种排列避免了中间元素成为邻居元素平均值的情况。代码实现简洁且高效,适用于大规模数组。

2025-07-07 00:15:00 1843

原创 1963. 使字符串平衡的最小交换次数

通过统计括号的平衡度balance,找出字符串中最大的不平衡负值;根据最大不平衡值计算最少的交换次数;交换次数公式为,有效地修复了字符串中的错误顺序;算法时间复杂度为 O(n),空间复杂度为 O(1),适合大规模数据。

2025-07-07 00:00:00 728

原创 1962. 移除石子使总数最小

方法是否正确使用的数据结构时间复杂度说明错误版本❌最大堆(误放值)O(k log n)错误在于放回了移除量正确版本✅最大堆(放回剩余)O(k log n)每次从最大堆取最大堆执行移除操作。

2025-07-06 00:15:00 450

原创 1959. K 次调整数组大小浪费的最小总空间

这道题结合了「动态规划」、「分段最优化」、「前缀和」与「区间最大值预处理」等多个算法思想,是一道很适合锻炼 DP 思维的题目。

2025-07-06 00:00:00 513

原创 1958. 检查操作是否合法

本题考察了二维棋盘上的方向遍历与颜色连续性判断。纯逻辑8方向判断方案不修改棋盘,更安全,易于理解。通过检查涂色点在各方向的邻接格颜色组合,判定是否形成满足条件的“好线段”。算法时间复杂度为常数(固定8x8棋盘及8方向),效率足够。

2025-07-05 00:15:00 454

原创 1954. 收集足够苹果的最小花园周长

若x >= 0,则|x| = x若x < 0,则|x| = -x本题巧妙利用了对称性和数学公式,将问题从遍历无限点的暴力计算,转化为数学表达式计算。利用单调性应用二分查找,快速找到满足条件的最小边长n。代码简洁高效,满足大数据量的需求。

2025-07-05 00:00:00 655

原创 1953. 你可以工作的最大周数

这道题通过简单的数学推导和贪心思路,巧妙地解决了「不能连续两周做同一个项目」的限制。它归结为判断最大任务项目与其他任务项目的任务数量关系,从而推断最大可工作的周数。掌握这类问题的思路,可以帮助你应对更多涉及任务调度和交替执行的限制类题目。

2025-07-04 00:15:00 315

原创 1947. 最大兼容性评分和

暴力全排列的时间复杂度为 O(m!),当 m 较大时不可行。状态压缩 + 记忆化搜索能在保证正确性的同时,有效剪枝和复用状态,适合 m 不太大的场景。如果 m 很大,还可以考虑匈牙利算法或KM算法来做最大权匹配,但实现更复杂。正确计算每对的兼容性评分构建合理的搜索策略找到最大匹配使用状态压缩和记忆化避免指数爆炸这也是匹配类问题中很典型的解法思路,掌握了这一套路,对类似题目大有裨益。

2025-07-04 00:00:00 556

原创 1946. 子字符串突变后可能得到的最大整数

从左到右遍历字符串。找到第一个使映射数字原数字的位置,开始替换。替换过程中,只要映射数字>=原数字就继续替换。遇到映射数字原数字时停止替换。替换结束后返回结果。本题考察贪心思想在字符串操作中的应用。关键在于合理定位开始和结束替换的时机,从左向右遍历字符串,同时保证替换的连续性和最大化结果。通过映射数组change和贪心策略,不断尝试替换,直到出现使结果变小的数字时停止,最终得到最大可能的数字字符串。

2025-07-03 10:01:18 707

原创 1943. 描述绘画结果

本题通过扫描线算法解决,核心是将线段开始和结束作为事件点,动态维护当前颜色集合的和,输出颜色不变的区间。实现简单,逻辑清晰,是处理区间重叠、颜色混合类问题的经典范式。

2025-07-03 10:00:31 809

原创 1942. 最小未被占据椅子的编号

通过时间排序和模拟来保证事件顺序正确。通过两个堆动态维护椅子的分配和释放。利用最小堆保证分配的椅子编号始终是最小可用的。掌握这类问题的处理技巧,对类似资源调度、区间分配等题目大有裨益。

2025-07-03 00:15:00 1544

原创 1937. 扣分后的最大得分

设dp[r][c]表示:在第r行选择第c列时,所能获得的最大得分。(对所有 k ∈ [0, n-1])这是一种从上一行所有位置k转移到当前列c的过程,惩罚是距离差abs(c - k)。这道题巧妙地结合了动态规划和前缀最大值的技巧,避开了朴素暴力的效率瓶颈,是一道非常经典的“转移代价”动态规划题。分方向维护最大值(如从左到右、右到左)将惩罚函数拆分为线性表达式预处理可复用的最大值原创不易,转载请注明出处 🙏。

2025-07-03 00:00:00 328

原创 1936. 新增的最少台阶数

贪心思想:每次尽量跳到能跳的最远距离;区间分段:将距离diff分成不超过dist的小段;算法技巧:用整数除法//快速计算插入数量,避免循环模拟。这类题目虽然简单,但在面试中非常常见,建议熟练掌握。

2025-07-02 00:15:00 356

原创 1934. 确认率

连接操作(特别是LEFT JOIN)的理解;分组与条件聚合的掌握;空值处理与容错设计的能力;SQL 数学表达能力(如除法、保留小数等)的掌握。这种模式在业务数据分析中极为常见,如计算用户转化率、活动完成率等,非常值得掌握。

2025-07-02 00:00:00 931

原创 1930. 长度为 3 的不同回文子序列

这道题巧妙利用了长度为3回文的结构特性,避免了暴力枚举所有子序列,借助首尾相同字符和中间字符集合的思想高效统计结果。核心思路简洁且易于实现,代码清晰易懂,并且能处理长度较大的字符串。

2025-07-01 00:15:00 858

原创 1927. 求和游戏

本题的核心在于通过数学模型,将博弈过程中的复杂操作简化为判断一个简单的数学条件。理解问题的本质,避免爆炸的状态模拟。通过计数和数学推导,实现高效判断。体现了博弈论和数学分析在算法中的威力。

2025-07-01 00:00:00 878

原创 1922. 统计好数字的数目

偶数下标必须是偶数数字,共5种可能:{0,2,4,6,8}奇数下标必须是质数数字,共4种可能:{2,3,5,7}这意味着每个偶数位置可以独立选择5个数字,每个奇数位置可以独立选择4个数字。若指数的当前位为1,则将当前基数乘到结果中。基数每次平方,指数右移一位。重复直到指数为0。计算abmodma^b \mod mabmodm可高效完成。方法时间复杂度适用范围备注暴力枚举O10nO(10^n)O10nnnn很小不可行,指数爆炸。

2025-06-30 00:15:00 996

原创 1921. 消灭怪物的最大数量

先算出怪物到达时间按时间顺序消灭怪物在消灭顺序上检测是否怪物已经到达城市只要在每一步判断条件满足即可,简单明了且效率高。如果你在游戏设计或类似的场景中需要处理“有限资源按顺序处理多事件”的问题,这种思路非常有参考价值。

2025-06-30 00:00:00 727

原创 1915. 最美子字符串的数目

设mask为当前字符串奇偶状态的掩码:mask的第 i 位 = 1 表示对应字符出现奇数次,0 表示偶数次。对任意子串word[i..j]它的奇偶状态掩码 =其中表示从字符串开头到第 k 个字符的奇偶状态掩码。本题巧妙利用了异或掩码对字符奇偶次数的快速表示。通过前缀掩码和哈希表计数,可以高效统计符合「最多一个字符出现奇数次」的子字符串数量。此类思路不仅限于本题,对于其他奇偶性质的字符计数题目也非常有参考价值。

2025-06-29 03:15:00 781

原创 1914. 循环轮转矩阵

本题通过将二维矩阵按层分解为多个一维数组,再对数组进行旋转,巧妙简化了矩阵旋转的复杂度。代码结构清晰,易读易维护,且能应对较大 k 的情况。掌握此类“矩阵层遍历 + 一维旋转”技巧,对于解决类似环形数组操作及矩阵操作类问题非常有帮助。

2025-06-29 03:00:00 665

空空如也

空空如也

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

TA关注的人

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