원 내부의 격자 점 계산

1730 단어 leetcodetheabbiedsa
circles가 그리드에 그려진 circles[i] = [xi, yi, ri] 원의 중심(xi, yi)과 반경ri을 나타내는 2D 정수 배열ith이 주어지면 적어도 하나의 원 안에 있는 격자 점의 수를 반환합니다.

메모:
  • 격자점은 좌표가 정수인 점입니다.
  • 원 둘레에 있는 점도 원 안에 있는 것으로 간주됩니다.

  • 예 1:



    입력: 원 = [[2,2,1]]
    출력: 5
    설명:
    위의 그림은 주어진 원을 보여줍니다.
    원 내부에 존재하는 격자점은 (1, 2), (2, 1), (2, 2), (2, 3) 및 (3, 2)이며 녹색으로 표시됩니다.
    빨간색으로 표시된 (1, 1) 및 (1, 3)과 같은 다른 점은 원 내부로 간주되지 않습니다.
    따라서 적어도 하나의 원 안에 존재하는 격자점의 수는 5입니다.

    예 2:



    입력: 원 = [[2,2,2],[3,4,1]]
    출력: 16
    설명:
    위의 그림은 주어진 원을 보여줍니다.
    적어도 하나의 원 안에 존재하는 정확히 16개의 격자점이 있습니다.
    그들 중 일부는 (0, 2), (2, 0), (2, 4), (3, 2) 및 (4, 4)입니다.

    제약:
  • 1 <= circles.length <= 200
  • circles[i].length == 3
  • 1 <= xi, yi <= 100
  • 1 <= ri <= min(xi, yi)

  • 해결책:

    class Solution:
        def countLatticePoints(self, circles: List[List[int]]) -> int:
            points = set()
            for x, y, r in circles:
                for i in range(x - r, x + r + 1):
                    for j in range(y - r, y + r + 1):
                        if (i - x) * (i - x) + (j - y) * (j - y) <= r * r:
                            points.add((i, j))
            return len(points)
    

    좋은 웹페이지 즐겨찾기