获得徽章 7
- #刷题交流#
day07: 找出单独的数
解题思路:
1. 定义函数 find_unique_number,它接受一个整数列表 numbers,这个列表代表班级同学卡片上的数字。
2. 初始化变量 result 为 ,然后通过循环遍历列表中的每个数字 num,并将其与 result 进行异或操作。
3. 最后返回的 result 就是那个只出现了一次的独特数字。
解毕展开评论点赞 - #刷题交流#
day06: 超市里的货物架调整
解题思路:
1. 读取输入数据,获取货架上的商品顺序和顾客想要购买的商品顺序。创建一个列表或队列来保存顾客的需求。
2. 需要通过对货架商品顺序的调整,确保尽可能多的顾客能够找到他们要买的商品。对货架商品进行排序,使得顾客最先能够找到他们最需要的商品。
3. 按照顾客的需求顺序,遍历货架商品,找出第一个符合顾客需求的商品并标记为已售出。
4. 统计被顾客购买的商品数量。
解毕展开赞过评论3 - #刷题交流#
day05: 找出整型数组中占比超过一半的数
解题思路:
1. 遍历数组,使用 candidate 保存当前候选数字,count 保存计数。
2. 如果 count == 0,说明当前候选数字被消耗完,需要重新选取候选数字。
3. 如果当前数字等于候选数字,count += 1;否则 count -= 1。
4. 遍历完成后,candidate 是可能的多数元素,还需要确认它是否出现次数超过一半。用 array.count(candidate) 验证候选数字的次数。
5. 如果验证通过,返回候选数字;否则返回 0。
解毕展开评论点赞 - #刷题交流#
day04: 创意标题匹配问题
解题思路:
1. 使用正则表达式将模板中的 {} 替换为 .*?,即匹配任意字符的部分.
2. 其他特殊字符通过 re.escape 转义,保证不会干扰正则表达式的解析.
3. 对于每个标题,使用 re.fullmatch 检查其是否符合生成规则.
4. 匹配结果存储为字符串数组,最后用逗号拼接返回.
解毕展开赞过评论1 - #刷题交流#
day03: 小E的怪物挑战
解题思路:
1. 整个问题的最优解(最多能击败的怪物数量)可以由子问题的最优解逐步推导得出。例如,要知道在面对第 i 个怪物时的最优选择,需要知道在前 i - 1 个怪物情况下的最优结果,然后根据当前怪物能否加入以及规则限制来更新最优解。
2. 在计算不同状态下最多能击败的怪物数量时,会多次重复计算某些中间状态。比如,计算小 E 在不同血量和攻击力组合下能击败的怪物情况时,对于同一个血量和攻击力的状态,可能会在考虑不同怪物时反复用到其对应的结果,通过动态规划记录这些中间状态(使用 dp 数组)可以避免重复计算,提高效率。
3. 定义 dp[x][y] 表示小 E 当前血量为 x、攻击力为 y 时最多能击败的怪物数量。这里的 x 和 y 取值范围可以根据题目给定的血量和攻击力的约束条件来确定,代码示例中简单地设置了较大的范围(从题目给定的最大值考虑,这里设为 1001,实际可以根据更精确的分析适当缩小范围)。
4. 对于每个怪物 i,遍历所有可能的血量 x 和攻击力 y 的状态,当怪物 i 的血量 h[i] 小于 x 且攻击力 a[i] 小于 y 时(即满足可击败条件),考虑击败这个怪物的情况,此时 dp[x][y] 可以由击败这个怪物后的状态 dp[x - h[i]][y - a[i]] 推导而来,因为击败这个怪物后小 E 的血量和攻击力会相应减少,而击败怪物数量增加了 1,所以更新 dp[x][y] 为 max(dp[x][y], dp[x - h[i]][y - a[i]] + 1),也就是取当前状态和击败该怪物后状态中能击败怪物数量更多的那个值。
解毕.展开评论点赞 - #刷题交流#
day02: 寻找最大葫芦
解题思路:
1. 先统计每种牌出现的次数.
2. 从频次较高的牌面开始,尝试找到一个符合条件的葫芦组合。
3. 确保三张和两张相同牌的总和不超过最大牌面值和.
4. 比较多个符合条件的组合,选择最优的组合.
解毕展开评论点赞 - #刷题交流#
day01: 数字分组求偶数和
解题思路:
1. 将每个数字组转换为偶数和奇数的计数。
2. 使用动态规划:维护两个状态:当前数字和为偶数的方式数,当前数字和为奇数的方数。
3. 每次选择时,根据当前的数字是偶数还是奇数来更新状态。
4. 最终的目标是找出所有选取数字使得总和为偶数的组合数。
解毕展开评论点赞