3643. Flip Square Submatrix Vertically
Description
You are given an m x n
integer matrix grid
, and three integers x
, y
, and k
.
The integers x
and y
represent the row and column indices of the top-left corner of a square submatrix and the integer k
represents the size (side length) of the square submatrix.
Your task is to flip the submatrix by reversing the order of its rows vertically.
Return the updated matrix.
Example 1:
Input: grid = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]], x = 1, y = 0, k = 3
Output: [[1,2,3,4],[13,14,15,8],[9,10,11,12],[5,6,7,16]]
Explanation:
The diagram above shows the grid before and after the transformation.
Example 2:
Input: grid = [[3,4,2,3],[2,3,4,2]], x = 0, y = 2, k = 2
Output: [[3,4,4,2],[2,3,2,3]]
Explanation:
The diagram above shows the grid before and after the transformation.
Constraints:
m == grid.length
n == grid[i].length
1 <= m, n <= 50
1 <= grid[i][j] <= 100
0 <= x < m
0 <= y < n
1 <= k <= min(m - x, n - y)
Solutions
Solution 1: Simulation
We start from row \(x\) and flip a total of \(\lfloor \frac{k}{2} \rfloor\) rows.
For each row \(i\), we need to swap it with the corresponding row \(i_2\), where \(i_2 = x + k - 1 - (i - x)\).
During the swap, we need to traverse \(j \in [y, y + k)\) and swap \(\text{grid}[i][j]\) with \(\text{grid}[i_2][j]\).
Finally, return the updated matrix.
The time complexity is \(O(k^2)\), where \(k\) is the side length of the submatrix. The space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|