add: 220411-CN [cpp]
This commit is contained in:
parent
caa5f4662c
commit
b443a444bf
|
|
@ -0,0 +1,50 @@
|
|||
#include <vector>
|
||||
#include <cstdio>
|
||||
|
||||
/**
|
||||
* 1260. Shift 2D Grid
|
||||
* Given a 2D grid of size m x n and an integer k. You need to shift the grid k times.
|
||||
* In one shift operation:
|
||||
* Element at grid[i][j] moves to grid[i][j + 1].
|
||||
* Element at grid[i][n - 1] moves to grid[i + 1][0].
|
||||
* Element at grid[m - 1][n - 1] moves to grid[0][0].
|
||||
* Return the 2D grid after applying shift operation k times.
|
||||
*/
|
||||
|
||||
class Solution {
|
||||
public:
|
||||
static std::vector<std::vector<int>> shiftGrid(const std::vector<std::vector<int>>& grid, int k) {
|
||||
int m = grid.size(), n = grid.front().size();
|
||||
int x = 0, y = 0;
|
||||
k = m * n - (k % (m * n)) - 1;
|
||||
while (k--) {
|
||||
y = (1 + y) % n;
|
||||
x = (y ? x : ((1 + x) % m));
|
||||
}
|
||||
std::vector<std::vector<int>> ret(m);
|
||||
for (int i = 0; i < m; ++i) {
|
||||
auto& t = ret[i];
|
||||
t.reserve(n);
|
||||
for (int j = 0; j < n; ++j) {
|
||||
y = (1 + y) % n;
|
||||
t.push_back(grid[x = (y ? x : ((1 + x) % m))][y]);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
auto ret = Solution::shiftGrid({
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
}, 9);
|
||||
for (const auto& i : ret) {
|
||||
for (const auto& j : i) {
|
||||
std::printf("%d ", j);
|
||||
}
|
||||
std::printf("\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -3,4 +3,4 @@ PROJECT(2204)
|
|||
|
||||
SET(CMAKE_CXX_STANDARD 23)
|
||||
|
||||
ADD_EXECUTABLE(2204 220411-CN.cpp)
|
||||
ADD_EXECUTABLE(2204 220411.cpp)
|
||||
|
|
|
|||
Loading…
Reference in New Issue