青训营X豆包MarsCode 技术训练营第一课

32 阅读3分钟

统计等级分布:你已经正确地使用了字典 level_count 来统计每个等级的英雄数量。这部分代码是正确的。 计算潜力:你需要遍历 level_count 字典,并计算有潜力的英雄总数。你当前的代码已经接近正确,但有一个小问题:你只计算了数量大于1的等级的英雄总数,而没有考虑到这些英雄的具体数量。 修改建议 遍历 level_count 字典:你需要遍历 level_count 字典,并计算有潜力的英雄总数。 计算有潜力的英雄总数:如果某个等级的英雄数量大于1,则这些英雄有潜力。你需要将这些英雄的数量累加到 potential_count 中。 修改后的代码 python def solution(n: int, u: list) -> int:    # 统计每个等级的英雄数量    level_count = {}    for level in u:        if level in         level_count:            level_count            [level] += 1        else:            level_count            [level] = 1        # 计算有潜力的英雄总数    potential_count = 0    for count in     level_count.values():        if count > 1:            potential_count             += count  # 累加            有潜力的英雄数量        return potential_count

关键步骤解释 统计等级分布: python level_count = {}for level in u:    if level in level_count:        level_count[level]         += 1    else:        level_count[level]         = 1

计算有潜力的英雄总数: python potential_count = 0for count in level_count.values():    if count > 1:        potential_count +=         count  # 累加有潜力的        英雄数量 要优化这个算法以减少时间复杂度,我们可以从以下几个方面入手:

  1. 数据结构的选择 你当前使用的是字典来统计每个等级的英雄数量,这个选择是合理的,因为字典的插入和查找操作的时间复杂度是 O(1)。
  2. 遍历的优化 你当前的代码在统计完等级分布后,直接遍历字典的值来计算有潜力的英雄总数。这个遍历操作的时间复杂度是 O(n),其中 n 是不同等级的数量。
  3. 减少不必要的操作 你当前的代码已经非常简洁,没有明显的不必要的操作。 优化思路 减少重复计算:你当前的代码已经避免了重复计算,每个等级的英雄数量只计算一次。 减少遍历次数:你当前的代码已经是最优的遍历方式,不需要进一步减少遍历次数。 代码优化 你当前的代码已经非常高效,不需要进一步优化。以下是你当前的代码: python def solution(n: int, u: list) -> int:    # 统计每个等级的英雄数量    level_count = {}    for level in u:        if level in         level_count:            level_count            [level] += 1        else:            level_count            [level] = 1        # 计算有潜力的英雄总数    potential_count = 0    for count in     level_count.values():        if count > 1:            potential_count             += count  # 累加            有潜力的英雄数量        return potential_count

时间复杂度分析 统计等级分布:时间复杂度为 O(n),其中 n 是英雄的数量。 计算有潜力的英雄总数:时间复杂度为 O(m),其中 m 是不同等级的数量,m <= n。