获得徽章 0
- #刷题交流# 统计说谎人数,排序:首先对成绩数组进行排序。排序后,我们可以更容易地计算每个成绩的相对位置。
计数:遍历排序后的数组,对于每个成绩,计算小于等于该成绩的学生数量。
判断:对于每个成绩,判断是否满足说谎的条件(即小于等于该成绩的学生数量大于比他分数高的学生数量)。
统计:统计满足条件的学生数量。展开评论点赞 - #刷题交流# 子序列种类等于长度问题
定义状态:使用一个二维数组 dp[i][j] 表示前 i 个元素中,长度为 j 的子序列的数量。
状态转移:
如果当前元素 a[i] 不在当前子序列中,则可以将其加入子序列,更新 dp[i+1][j+1]。
如果当前元素 a[i] 已经在当前子序列中,则不加入,保持 dp[i+1][j] 不变。
最终结果:累加所有长度为 k 的子序列的数量,其中 k 是数组的长度。展开评论点赞 - #刷题交流# 两个不完整数字大小判断
逐位比较:从左到右逐位比较 X 和 Y 的字符。
如果 X[i] 和 Y[i] 都是数字,直接比较它们。
如果 X[i] 是 ? 而 Y[i] 是数字,考虑 X[i] 替换为大于 Y[i] 的最小数字。
如果 X[i] 是数字而 Y[i] 是 ?,考虑 Y[i] 替换为小于 X[i] 的最大数字。
如果 X[i] 和 Y[i] 都是 ?,考虑所有可能的替换值。
前导零处理:确保 ? 不能替换为 0 作为第一个字符。
确定性判断:如果在某一位上可以确定 X 大于 Y,则返回 1;如果可以确定 X 小于 Y,则返回 0;如果无法确定,继续比较下一位。展开评论点赞 - #刷题交流# 避免连续重复字符
初始化:创建一个空的结果字符串 result。
遍历字符串:从左到右遍历字符串 s。
处理已知字符:如果当前字符不是 ?,直接将其添加到 result 中。
处理未知字符:
如果当前字符是 ?,则需要找到一个合适的小写字母进行替换。
选择一个与前一个字符和后一个字符都不同的字母。
如果前一个字符和后一个字符都已知,选择一个与它们都不同的字母。
如果前一个字符或后一个字符未知,选择一个与已知字符不同的字母。
如果前一个字符和后一个字符都未知,选择任意一个小写字母。
返回结果:遍历结束后,返回 result。展开评论点赞 - #刷题交流# 初始化:从 m×n 的地皮开始。
选择最大正方形:选择当前地皮中最大的正方形(边长为 min(m,n))。
递归处理剩余部分:将这个正方形从地皮中移除,递归处理剩余的地皮。
终止条件:当剩余的地皮面积为0时,递归结束。评论点赞 - #刷题交流# 数组构造问题
计算数组 a 的总和:首先计算数组 a 的总和 sum_a。
初始化 DP 数组:创建一个 DP 数组来存储满足条件的数组 b 的数量。
状态转移:对于每个元素 ai,我们需要找到所有可能的 bi 值,使得 bi=ai 且 bi 是正整数。然后更新 DP 数组。
取模运算:由于答案需要对 109+7 取模,我们在每次更新 DP 数组时都需要进行取模运算。展开评论点赞 - #刷题交流# 今天和ai一起做了偶数喜好这题。
初始化:定义一个变量 max_even_factors 来存储当前找到的最大偶数因子数量,初始值为0。
遍历区间:从 l 到 r 遍历每一个数。
计算偶数因子数量:对于每一个数,计算其偶数因子的数量。
更新最大值:如果当前数的偶数因子数量大于 max_even_factors,则更新 max_even_factors。
返回结果:遍历结束后,返回 max_even_factors。展开赞过评论1