1260. Shift 2D Grid
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.
Дана двумерная сетка размером m x n и số nguyên k. it is required сдвинуть сетку k раз. За одну операцию сдвига: element в grid[i][j] перемещается в grid[i][j + 1]. element в grid[i][n - 1] перемещается в grid[i + 1][0]. element в grid[m - 1][n - 1] перемещается в grid[0][0]. return двумерную сетку после Applications операции сдвига k раз.
Ví dụ:
Input: grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
Output: [[9,1,2],[3,4,5],[6,7,8]]
C# lời giải
đã khớp/gốcpublic class Solution {
public IList<IList<int>> ShiftGrid(int[][] grid, int k) {
int m = grid.Length;
int n = grid[0].Length;
int total = m * n;
k = k % total;
if (k == 0) {
return grid;
}
int[] flatArray = new int[total];
for (int i = 0; i < total; i++) {
flatArray[i] = grid[i / n][i % n];
}
int[] newArray = new int[total];
for (int i = 0; i < total; i++) {
newArray[(i + k) % total] = flatArray[i];
}
var newGrid = new List<IList<int>>();
for (int i = 0; i < m; i++) {
var newRow = new List<int>();
for (int j = 0; j < n; j++) {
newRow.Add(newArray[i * n + j]);
}
newGrid.Add(newRow);
}
return newGrid;
}
}
C++ lời giải
bản nháp tự động, xem lại trước khi gửi#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public IList<vector<int>> ShiftGrid(int[][] grid, int k) {
int m = grid.size();
int n = grid[0].size();
int total = m * n;
k = k % total;
if (k == 0) {
return grid;
}
vector<int>& flatArray = new int[total];
for (int i = 0; i < total; i++) {
flatArray[i] = grid[i / n][i % n];
}
vector<int>& newArray = new int[total];
for (int i = 0; i < total; i++) {
newArray[(i + k) % total] = flatArray[i];
}
var newGrid = new List<vector<int>>();
for (int i = 0; i < m; i++) {
var newRow = new List<int>();
for (int j = 0; j < n; j++) {
newRow.push_back(newArray[i * n + j]);
}
newGrid.push_back(newRow);
}
return newGrid;
}
}
Java lời giải
đã khớp/gốcimport java.util.ArrayList;
import java.util.List;
public class Solution {
public List<List<Integer>> shiftGrid(int[][] grid, int k) {
int m = grid.length, n = grid[0].length;
int total = m * n;
k %= total;
if (k == 0) {
List<List<Integer>> result = new ArrayList<>();
for (int[] row : grid) {
List<Integer> newRow = new ArrayList<>();
for (int val : row) {
newRow.add(val);
}
result.add(newRow);
}
return result;
}
int[] flatArray = new int[total];
for (int i = 0; i < total; i++) {
flatArray[i] = grid[i / n][i % n];
}
int[] newArray = new int[total];
for (int i = 0; i < total; i++) {
newArray[(i + k) % total] = flatArray[i];
}
List<List<Integer>> result = new ArrayList<>();
for (int i = 0; i < m; i++) {
List<Integer> newRow = new ArrayList<>();
for (int j = 0; j < n; j++) {
newRow.add(newArray[i * n + j]);
}
result.add(newRow);
}
return result;
}
}
JavaScript lời giải
đã khớp/gốcvar shiftGrid = function(grid, k) {
const m = grid.length, n = grid[0].length;
const total = m * n;
k = k % total;
if (k === 0) {
return grid;
}
const flatArray = grid.flat();
const newArray = flatArray.slice(-k).concat(flatArray.slice(0, -k));
const newGrid = [];
for (let i = 0; i < m; i++) {
newGrid.push(newArray.slice(i * n, (i + 1) * n));
}
return newGrid;
};
Algorithm
Преобразовать двумерную сетку в одномерный mảng.
Выполнить сдвиг elementов в одномерном mảngе.
Преобразовать одномерный mảng обратно в двумерную сетку.
😎
Vacancies for this task
việc làm đang hoạt động with overlapping task tags are đã hiển thị.
Chưa có việc làm đang hoạt động.