[LeetCode] 每日一题 2712. 使所有字符相等的最小成本(贪心算法)
本题要求使二进制字符串所有字符相等,并最小化翻转成本。通过贪心算法,我们只需在相邻字符变化的地方选择最优的翻转策略,使得最终结果最小化。代码仅需一次遍历,时间复杂度为 O(n)
[LeetCode] 每日一题 2829. k-avoiding 数组的最小总和(简单的数学推导)
本题要求构造 k-avoiding 数组,使得任意两个数的和不等于 k,并让总和最小。通过数学分析,我们优先选择 1 ~ k/2 的数,不足时从 k 开始补充,并使用等差数列求和公式优化计算,使得整体时间复杂度为 O(1)
[LeetCode] 每日一题 2711. 对角线上不同值的数量差(灵活使用前后缀思维化简)
这道题通过对矩阵按对角线遍历,计算每个单元格的左上对角线和右下对角线的不同值数量差。优化了直接模拟的计算方法,采用了按对角线遍历的思路,将复杂度降至 O(m * n),高效求解问题
[LeetCode] 每日一题 2255. 统计是给定字符串前缀的字符串数目(简单遍历比较)
这道题要求统计数组中有多少个字符串是给定字符串 s 的前缀。通过简单的遍历和逐个字符的比较,我们可以实现高效的解决方案。要注意题目中的前缀关系,确保理解清楚判断的条件
[LeetCode] 每日一题 2116. 判断一个括号字符串是否有效(冗余假设法)
本题要求判断一个括号字符串是否能通过修改变成有效的括号字符串。我们使用冗余假设法,双向遍历字符串,在从左到右和从右到左的过程中检测是否有足够的括号可调整,从而判断其合法性
[LeetCode] 每日一题 2643. 一最多的行(简单题)
本题要求找出二进制矩阵中 1 最多的行,并返回其索引和 1 的数量。遍历矩阵逐行统计 1 的个数,实时更新最大值。时间复杂度 O(m * n),适合作为基础练习
[LeetCode] 每日一题 2680. 最大或值(前缀和的位运算版本)
本题要求在最多 k 次操作内,将数组某些元素乘 2,使得最终的按位或值最大。利用前缀或与后缀或预处理数组,可在 O(n) 时间内高效计算最优解,避免暴力解法的 O(n^2) 复杂度
[LeetCode] 每日一题 2612. 最少翻转操作数
本题要求通过翻转操作将 1 移动到指定位置,且不能经过 banned 位置。使用 BFS + TreeSet 维护合法索引,高效计算最短翻转次数,避免暴力搜索,提高性能
[LeetCode] 每日一题 2610. 转换二维数组 + 集合迭代踩坑
本题要求将一维数组转换为尽可能少行的二维数组,每行元素必须唯一。使用哈希统计元素频率,再按频率分配到不同行,确保满足约束。优化方法避免了遍历时修改集合的问题。
[LeetCode] 每日一题 2614. 对角线上的质数
本题要求找到二维数组对角线上的最大质数。我们遍历主对角线和副对角线的所有元素,并利用试除法判断质数。时间复杂度为 O(n√m),主要优化点在于只检查到平方根,最终返回最大质数