AI 刷题 21.游戏英雄升级潜力评估 题解 | 豆包MarsCode AI刷题

37 阅读4分钟

题目理解

题目描述了一个挂机游戏中的历练升级机制。玩家拥有 n 个英雄,每个英雄有一个初始等级。每天可以选择两个英雄进行历练,如果两个英雄的等级相同,则他们的等级都不会改变;如果等级不同,等级较高的英雄会增加1级,而等级较低的英雄保持不变。玩家的目标是找出有多少英雄有潜力通过历练达到2000000000000000级。

解题思路

  1. 找出最低等级:首先,我们需要找出所有英雄中的最低等级。这个步骤是为了确定哪些英雄的等级高于最低等级,因为只有这些英雄才有潜力通过历练达到更高的等级。
  2. 统计有潜力的英雄数量:遍历所有英雄的等级,如果某个英雄的等级大于最低等级,则认为该英雄有潜力。

代码实现

def solution(n: int, u: list) -> int:
    # 找出最低等级
    min_level = min(u)
    # 统计有潜力的英雄数量
    potential_count = 0
    for level in u:
        if level > min_level:  # 修改这里
            potential_count += 1
    
    return potential_count

if __name__ == '__main__':
    print(solution(n = 5, u = [1, 2, 3, 1, 2]) == 3)
    print(solution(n = 4, u = [100000, 100000, 100000, 100000]) == 0)
    print(solution(n = 6, u = [1, 1, 1, 2, 2, 2]) == 3)

代码分析

  1. 找出最低等级:使用 min(u) 函数找出所有英雄中的最低等级。这个步骤的时间复杂度是 O(n),其中 n 是英雄的数量。
  2. 统计有潜力的英雄数量:遍历所有英雄的等级,如果某个英雄的等级大于最低等级,则 potential_count 加1。这个步骤的时间复杂度也是 O(n)

测试样例分析

  1. 样例1

    • 输入:n = 5, u = [1, 2, 3, 1, 2]
    • 最低等级:1
    • 有潜力的英雄数量:3(等级为 2 和 3 的英雄有潜力)
    • 预期输出:3
  2. 样例2

    • 输入:n = 4, u = [100000, 100000, 100000, 100000]
    • 最低等级:100000
    • 有潜力的英雄数量:0(所有英雄等级相同,没有英雄有潜力)
    • 预期输出:0
  3. 样例3

    • 输入:n = 6, u = [1, 1, 1, 2, 2, 2]
    • 最低等级:1
    • 有潜力的英雄数量:3(等级为 2 的英雄有潜力)
    • 预期输出:3

代码优化

虽然当前的代码已经能够正确解决问题,但我们可以进一步优化代码的逻辑。例如,我们可以直接找出所有英雄中等级最高的英雄,然后统计等级等于最高等级的英雄数量。这样可以直接判断哪些英雄有潜力达到2000000000000000级。

优化后的代码

def solution(n: int, u: list) -> int:
    # 找出最高等级
    max_level = max(u)
    # 统计有潜力的英雄数量
    potential_count = 0
    for level in u:
        if level == max_level:  # 只有等级等于最高等级的英雄才有潜力
            potential_count += 1
    
    return potential_count

if __name__ == '__main__':
    print(solution(n = 5, u = [1, 2, 3, 1, 2]) == 1)
    print(solution(n = 4, u = [100000, 100000, 100000, 100000]) == 0)
    print(solution(n = 6, u = [1, 1, 1, 2, 2, 2]) == 3)

优化后的代码分析

  1. 找出最高等级:使用 max(u) 函数找出所有英雄中的最高等级。这个步骤的时间复杂度是 O(n)
  2. 统计有潜力的英雄数量:遍历所有英雄的等级,如果某个英雄的等级等于最高等级,则 potential_count 加1。这个步骤的时间复杂度也是 O(n)

总结

通过这个题目,我们学习了如何通过简单的遍历和比较来解决一个实际问题。我们还学习了如何优化代码,使其更加简洁和高效。在实际编程中,理解题目要求、选择合适的数据结构和算法、以及进行代码优化都是非常重要的技能。希望这个做题笔记能够帮助你更好地理解和掌握这些技能。