하위 사각형 쿼리

3285 단어 theabbieleetcodedsa
생성자에서 SubrectangleQueries 직사각형을 정수 행렬로 수신하고 두 가지 메서드를 지원하는 클래스rows x cols를 구현합니다.

1. updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)
  • 왼쪽 위 좌표가 newValue이고 오른쪽 아래 좌표가 (row1,col1)인 하위 직사각형에서 (row2,col2)로 모든 값을 업데이트합니다.

  • 2. getValue(int row, int col)
  • 직사각형에서 좌표의 현재 값(row,col)을 반환합니다.

  • 예 1:

    입력
    ["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue","getValue"]
    [[[[1,2,1],[4,3,4],[3,2,1],[1,1,1]]],[0,2],[0,0,3, 2,5],[0,2],[3,1],[3,0,3,2,10],[3,1],[0,2]]
    산출
    [널,1,널,5,5,널,10,5]
    설명
    SubrectangleQueries subrectangleQueries = new SubrectangleQueries([[1,2,1],[4,3,4],[3,2,1],[1,1,1]]);
    //초기 사각형(4x3)은 다음과 같습니다.
    //1 2 1
    //4 3 4
    //3 2 1
    //111
    subrectangleQueries.getValue(0, 2);//1 반환
    subrectangleQueries.updateSubrectangle(0, 0, 3, 2, 5);
    //이 업데이트 후 사각형은 다음과 같습니다.
    //5 5 5
    //5 5 5
    //5 5 5
    //5 5 5
    subrectangleQueries.getValue(0, 2);//5 반환
    subrectangleQueries.getValue(3, 1);//5 반환
    subrectangleQueries.updateSubrectangle(3, 0, 3, 2, 10);
    //이 업데이트 후 사각형은 다음과 같습니다.
    //5 5 5
    //5 5 5
    //5 5 5
    //10 10 10
    subrectangleQueries.getValue(3, 1);//10 반환
    subrectangleQueries.getValue(0, 2);//5 반환

    예 2:

    입력
    ["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue"]
    [[[[1,1,1],[2,2,2],[3,3,3]]],[0,0],[0,0,2,2,100],[0,0] ,[2,2],[1,1,2,2,20],[2,2]]
    산출
    [널,1,널,100,100,널,20]
    설명
    SubrectangleQueries subrectangleQueries = new SubrectangleQueries([[1,1,1],[2,2,2],[3,3,3]]);
    subrectangleQueries.getValue(0, 0);//1 반환
    subrectangleQueries.updateSubrectangle(0, 0, 2, 2, 100);
    subrectangleQueries.getValue(0, 0);//100 반환
    subrectangleQueries.getValue(2, 2);//100 반환
    subrectangleQueries.updateSubrectangle(1, 1, 2, 2, 20);
    subrectangleQueries.getValue(2, 2);//20 반환

    제약:
  • 500updateSubrectangle 두 가지 방법을 모두 고려한 작업은 최대 getValue개입니다.
  • 1 <= rows, cols <= 100
  • rows == rectangle.length
  • cols == rectangle[i].length
  • 0 <= row1 <= row2 < rows
  • 0 <= col1 <= col2 < cols
  • 1 <= newValue, rectangle[i][j] <= 10^9
  • 0 <= row < rows
  • 0 <= col < cols

  • 해결책:

    class SubrectangleQueries:
    
        def __init__(self, rectangle: List[List[int]]):
            self.rec = rectangle
    
        def updateSubrectangle(self, row1: int, col1: int, row2: int, col2: int, newValue: int) -> None:
            for i in range(row1, row2 + 1):
                for j in range(col1, col2 + 1):
                    self.rec[i][j] = newValue
    
        def getValue(self, row: int, col: int) -> int:
            return self.rec[row][col]
    
    
    # Your SubrectangleQueries object will be instantiated and called as such:
    # obj = SubrectangleQueries(rectangle)
    # obj.updateSubrectangle(row1,col1,row2,col2,newValue)
    # param_2 = obj.getValue(row,col)
    

    좋은 웹페이지 즐겨찾기