public class SubrectangleQueries extends Object
1476 - Subrectangle Queries.
Medium
Implement the class SubrectangleQueries which receives a rows x cols rectangle as a matrix of integers in the constructor and supports two methods:
updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)newValue in the subrectangle whose upper left coordinate is (row1,col1) and bottom right coordinate is (row2,col2).getValue(int row, int col)(row,col) from the rectangle.Example 1:
Input [“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]]
Output: [null,1,null,5,5,null,10,5]
Explanation: SubrectangleQueries subrectangleQueries = new SubrectangleQueries(1,2,1],[4,3,4],[3,2,1],[1,1,1); // The initial rectangle (4x3) looks like: // 1 2 1 // 4 3 4 // 3 2 1 // 1 1 1 subrectangleQueries.getValue(0, 2); // return 1 subrectangleQueries.updateSubrectangle(0, 0, 3, 2, 5); // After this update the rectangle looks like: // 5 5 5 // 5 5 5 // 5 5 5 // 5 5 5 subrectangleQueries.getValue(0, 2); // return 5 subrectangleQueries.getValue(3, 1); // return 5 subrectangleQueries.updateSubrectangle(3, 0, 3, 2, 10); // After this update the rectangle looks like: // 5 5 5 // 5 5 5 // 5 5 5 // 10 10 10 subrectangleQueries.getValue(3, 1); // return 10 subrectangleQueries.getValue(0, 2); // return 5
Example 2:
Input [“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]]
Output: [null,1,null,100,100,null,20]
Explanation: SubrectangleQueries subrectangleQueries = new SubrectangleQueries(1,1,1],[2,2,2],[3,3,3); subrectangleQueries.getValue(0, 0); // return 1 subrectangleQueries.updateSubrectangle(0, 0, 2, 2, 100); subrectangleQueries.getValue(0, 0); // return 100 subrectangleQueries.getValue(2, 2); // return 100 subrectangleQueries.updateSubrectangle(1, 1, 2, 2, 20); subrectangleQueries.getValue(2, 2); // return 20
Constraints:
500 operations considering both methods: updateSubrectangle and getValue.1 <= rows, cols <= 100rows == rectangle.lengthcols == rectangle[i].length0 <= row1 <= row2 < rows0 <= col1 <= col2 < cols1 <= newValue, rectangle[i][j] <= 10^90 <= row < rows0 <= col < cols| Constructor and Description |
|---|
SubrectangleQueries(int[][] rectangle) |
| Modifier and Type | Method and Description |
|---|---|
int |
getValue(int row,
int col) |
void |
updateSubrectangle(int row1,
int col1,
int row2,
int col2,
int newValue) |
Copyright © 2023. All rights reserved.