伴学笔记11| 豆包MarsCode AI刷题

109 阅读3分钟

学习笔记:计算比赛配对次数

体会

在解决“计算比赛配对次数”这个问题时,我深刻体会到了循环和条件判断在编程中的重要性。通过逐步分析问题的逻辑,并将其转化为代码,我不仅加深了对这两个概念的理解,还学会了如何将实际问题抽象为算法。

  1. 问题理解

    • 题目要求计算从 n 支队伍开始,直到决出唯一的获胜队伍为止,总共进行的配对次数。
    • 关键点在于处理偶数和奇数队伍的不同情况,并根据每轮比赛的结果更新队伍数。
  2. 循环的使用

    • 通过 while 循环,我们可以不断处理每一轮的比赛,直到队伍数减少到 1 为止。
    • 循环的终止条件是 n > 1,即当队伍数为 1 时,比赛结束。
  3. 条件判断的使用

    • 使用 if-else 语句来判断当前队伍数是偶数还是奇数,并根据不同的情况更新队伍数和配对次数。
    • 偶数队伍时,进行 n / 2 场比赛,剩余 n / 2 支队伍。
    • 奇数队伍时,进行 (n - 1) / 2 场比赛,剩余 (n - 1) / 2 + 1 支队伍。

心得

  1. 逻辑清晰

    • 在编写代码时,保持逻辑清晰非常重要。特别是在处理复杂条件时,清晰的逻辑可以帮助我们避免错误和调试困难。
  2. 代码复用

    • 通过合理使用循环和条件判断,我们可以编写出更加模块化和可复用的代码。这不仅提高了代码的可读性,还减少了维护成本。
  3. 调试技巧

    • 在调试过程中,理解循环和条件判断的执行流程非常关键。通过逐步调试和打印中间结果,可以更容易地找到问题的根源。
  4. 算法优化

    • 在算法设计中,合理使用循环和条件判断可以显著提高算法的效率。例如,通过减少不必要的循环次数或优化条件判断,可以降低时间复杂度。

示例代码

def solution(n: int) -> int:

    matches = 0

    while n > 1:

        if n % 2 == 0:

            # 偶数队伍

            matches += n // 2

            n = n // 2

        else:

            # 奇数队伍

            matches += (n - 1) // 2

            n = (n - 1) // 2 + 1

    return matches

if __name__ == '__main__':

    print(solution(7) == 6)

    print(solution(14) == 13)

    print(solution(1) == 0)

在这个示例中,我们使用了一个 while 循环来处理每一轮的比赛,并使用 if-else 语句来判断当前队伍数是偶数还是奇数。通过逐步更新队伍数和配对次数,最终得到了正确的结果。

总结

通过解决这个问题,我不仅加深了对循环和条件判断的理解,还学会了如何将实际问题抽象为算法。在未来的学习和工作中,我将继续加强对这两个概念的理解和应用,不断提升自己的编程能力。