题目:原题链接(简单)

标签:数学

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( 1 ) O(1) O(1) O ( 1 ) O(1) O(1) 40ms (56.31%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def orchestraLayout(self, num: int, x: int, y: int) -> int:
        # 计算当前位置第几圈
        r = min(x, y, num - 1 - x, num - 1 - y)
        # print("当前圈数:", r)

        # 计算最外圈长度
        first = 4 * (num - 1)
        # print("最外圈长度:", first)

        # 计算所有外圈总长度
        outer = ((first + first - 8 * (r - 1)) * r) // 2
        # print("当前外圈总长度:", outer)

        # 计算当前圈长度
        x -= r
        y -= r
        num -= 2 * r

        if x == 0:  # 在上边
            inner = (y + 1)
        elif y == num - 1:  # 在右边
            inner = (num + x)
        elif x == num - 1:  # 在下边
            inner = (num + (num - 1) + (num - y - 1))
        else:  # 在左边
            inner = (num + (num - 1) + (num - 1) + (num - x - 1))
        # print("当前内圈总长度:", inner)

        ans = (inner + outer) % 9
        return ans if ans > 0 else 9