[LeetCode] 每日一题 1863. 找出所有子集的异或总和再求和(递归法 | 数学推导法)
通过递归法和数学推导两种方法解决子集异或总和之和问题,递归暴力可行但效率低,数学解法则借助按位分析与组合数学,大幅优化复杂度
[LeetCode] 每日一题 1123. 最深叶节点的最近公共祖先(dfs + 递归)
本题要求返回最深叶节点的最近公共祖先。通过 DFS 递归记录最大深度,并在回溯时判断左右深度是否相等,巧妙找出目标节点
[LeetCode] 每日一题 2874. 有序三元组中的最大值 II(与昨天思路一致)
今天的题目和昨天一样,但数据范围变大了,使得暴力法不可行。我们可以用前后缀数组 O(n) 解决,也可以用贪心法 O(1) 优化空间
[LeetCode] 每日一题 2873. 有序三元组中的最大值 I(前后缀数组 + 贪心优化)
这道题要求找到最大 (i, j, k) 组合,使 (nums[i] - nums[j]) * nums[k] 最大化。先用前后缀数组优化到 O(n),再用贪心算法降低空间复杂度至 O(1),提升效率
[LeetCode] 每日一题 2140. 解决智力问题(dfs + 记忆化搜索)
这道题是典型的最优子序列问题,使用深度优先搜索 + 记忆化搜索优化计算,避免重复计算,提升效率。解题思路围绕两种选择:解决当前题或跳过,并通过递归找到最大得分。最终时间复杂度优化至 O(n)
[LeetCode] 每日一题 2278. 字母在字符串中的百分比(简单计数)
本题是一个简单的字符串统计问题,遍历 s 计算 letter 出现次数,然后计算百分比并向下取整。需要注意除零情况和整数除法的计算顺序,时间复杂度 O(n),空间复杂度 O(1)
[LeetCode] 每日一题 2109. 向字符串添加空格(双指针 + 字符串操作)
本题要求在字符串指定位置插入空格,采用 双指针 + StringBuilder 方案,避免数组插入操作的高开销,同时减少字符串对象创建,优化内存和性能,最终时间复杂度 O(n),适用于大规模字符串处理
[LeetCode] 每日一题 2360. 图中的最长环(dfs + 时间戳标记法)
本题要求找出有向图中的最长环,采用 时间戳标记法 记录节点访问时间,避免重复搜索。相比 DFS 直接搜索,本方法更高效,最终时间复杂度 O(n),适用于大规模数据
[LeetCode] 每日一题 2716. 最小化字符串长度(简单题)
本题要求最小化字符串长度,本质上是统计不同字符的个数。利用 位运算的位图方法,我们可以高效存储字符出现情况,并计算最终结果,时间复杂度 O(n),空间复杂度 O(1)
[LeetCode] 每日一题 2712. 使所有字符相等的最小成本(贪心算法)
本题要求使二进制字符串所有字符相等,并最小化翻转成本。通过贪心算法,我们只需在相邻字符变化的地方选择最优的翻转策略,使得最终结果最小化。代码仅需一次遍历,时间复杂度为 O(n)